zoukankan      html  css  js  c++  java
  • Python学习

    Python 中的标识符是区分大小写的。

      所有 Python 的关键字只包含小写字母

    下划线开头的标识符是有特殊意义的。

      以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入;

      以双下划线开头__foo 代表类的私有成员

      以双下划线开头和结尾__foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。

    Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块

      缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行

      IndentationError: unindent does not match any outer indentation level错误表明,你使用的缩进方式不一致,有的是 tab 键缩进,有的是空格缩进,改为一致即可。

      相同数目的行首缩进空格数

      建议你在每个缩进层次使用 单个制表符两个空格四个空格 , 切记不能混用

      如果是 IndentationError: unexpected indent 错误, 则 python 编译器是在告诉你"Hi,老兄,你的文件里格式不对了,可能是tab和空格没对齐的问题",所有 python 对格式要求非常严格。

    引号( ' )、双引号( " )、三引号( '''""" ) 来表示字符串,引号的开始与结束必须的相同类型的。

      三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释

    注释采用 # 开头

      多行注释使用三个单引号(''')或三个双引号(""")。

    函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

      空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构

      记住:空行也是程序代码的一部分。

    等待用户输入

      raw_input("按下 enter 键退出,其他任意键显示... ")

    Print 输出

      默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 ,

    缩进相同的一组语句构成一个代码块,我们称之代码组

      像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。

      我们将首行及后面的代码组称为一个子句(clause)。

    if expression : 
       suite 
    elif expression :  
       suite  
    else :  
       suite 
    

      

    命令行参数

      使用 -h 参数查看各参数帮助信息:

    执行脚本传入参数,使用sys模块

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import sys
    
    print sys.argv
    
    ./test.py hello
    ['./test.py', 'hello']
    

      sys.argv[0] 代表文件本身路径,所带参数从 sys.argv[1] 开始。

    脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单。

      #!/usr/bin/python : 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器;

      #!/usr/bin/env python(推荐): 这种用法是为了防止操作系统用户没有将 python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到 env 设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作。

      #!/usr/bin/python 相当于写死了python路径;

      #!/usr/bin/env python 会去环境设置寻找 python 目录,推荐这种写法

    Python 变量类型

    变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。

    基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。

    因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

    变量赋值

      不需要类型声明。

      每个变量在使用前必须赋值,变量赋值以后该变量才会被创建。

        等号(=)用来给变量赋值。

      每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    counter = 100 # 赋值整型变量
    miles = 1000.0 # 浮点型
    name = "John" # 字符串
    print counter
    print miles
    print name
    

      多个变量赋值

        同时为多个变量赋值   

    a = b = c = 1 
    

        为多个对象指定多个变量

    a, b, c = 1, 2, "john" 
    

          两个整型对象1和2的分配给变量 a 和 b,字符串对象 "john" 分配给变量 c。

    标准数据类型

    在内存中存储的数据可以有多种类型。

    Python 定义了一些标准类型,用于存储各种类型的数据。

    Python有五个标准的数据类型:

    • Numbers(数字)
    • String(字符串)
    • List(列表)
    • Tuple(元组)
    • Dictionary(字典)

    Python数字

    数字数据类型用于存储数值。

    他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。

    使用del语句删除一些对象的引用

    Python支持四种不同的数字类型:

    • int(有符号整型)
    • long(长整型[也可以代表八进制和十六进制])
    • float(浮点型)
    • complex(复数)
      • 长整型也可以使用小写 l,但是还是建议您使用大写 L,避免与数字 1 混淆。Python使用 L 来显示长整型。
      • Python 还支持复数,复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。

    Python字符串

    字符串或串(String)是由数字、字母、下划线组成的一串字符。

    python的字串列表有2种取值顺序:

    • 从左到右索引默认0开始的,最大范围是字符串长度少1
    • 从右到左索引默认-1开始的,最大范围是字符串开头

    从字符串中获取一段子字符串的话,可以使用变量 [头下标:尾下标],就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。

    加号(+)是字符串连接运算符,星号(*)是重复操作

    当使用以冒号分隔的字符串,python返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    str = 'Hello World!'
    print str # 输出完整字符串
    print str[0] # 输出字符串中的第一个字符
    print str[2:5] # 输出字符串中第三个至第五个之间的字符串
    print str[2:] # 输出从第三个字符开始的字符串
    print str * 2 # 输出字符串两次
    print str + "TEST" # 输出连接的字符串
    
    Hello World!
    H
    llo
    llo World!
    Hello World!Hello World!
    Hello World!TEST
    

      

    Python列表

    List(列表) 是 Python 中使用最频繁的数据类型。

    列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

    列表用 [ ] 标识,是 python 最通用的复合数据类型

    列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

    加号 + 是列表连接运算符,星号 * 是重复操作。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
    tinylist = [123, 'john']
    print list # 输出完整列表
    print list[0] # 输出列表的第一个元素
    print list[1:3] # 输出第二个至第三个元素 
    print list[2:] # 输出从第三个开始至列表末尾的所有元素
    print tinylist * 2 # 输出列表两次
    print list + tinylist # 打印组合的列表
    
    ['runoob', 786, 2.23, 'john', 70.2]
    runoob
    [786, 2.23]
    [2.23, 'john', 70.2]
    [123, 'john', 123, 'john']
    ['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
    

      

    Python元组

    元组是另一个数据类型,类似于List(列表)。

    元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
    tinytuple = (123, 'john')
    print tuple # 输出完整元组
    print tuple[0] # 输出元组的第一个元素
    print tuple[1:3] # 输出第二个至第三个的元素 
    print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
    print tinytuple * 2 # 输出元组两次
    print tuple + tinytuple # 打印组合的元组
    
    ('runoob', 786, 2.23, 'john', 70.2)
    runoob
    (786, 2.23)
    (2.23, 'john', 70.2)
    (123, 'john', 123, 'john')
    ('runoob', 786, 2.23, 'john', 70.2, 123, 'john')
    
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
    list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
    tuple[2] = 1000 # 元组中是非法应用
    list[2] = 1000 # 列表中是合法应用
    

      

    Python 字典

    字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型列表是有序的对象集合,字典是无序的对象集合

    两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取

    字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    dict = {}
    dict['one'] = "This is one"
    dict[2] = "This is two"
    tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
    print dict['one'] # 输出键为'one' 的值
    print dict[2] # 输出键为 2 的值
    print tinydict # 输出完整的字典
    print tinydict.keys() # 输出所有键
    print tinydict.values() # 输出所有值
    
    This is one
    This is two
    {'dept': 'sales', 'code': 6734, 'name': 'john'}
    ['dept', 'code', 'name']
    ['sales', 6734, 'john']
    

      

    Python数据类型转换

    有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

    以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

    函数描述

    int(x [,base])

    将x转换为一个整数

    long(x [,base] )

    将x转换为一个长整数

    float(x)

    将x转换到一个浮点数

    complex(real [,imag])

    创建一个复数

    str(x)

    将对象 x 转换为字符串

    repr(x)

    将对象 x 转换为表达式字符串

    eval(str)

    用来计算在字符串中的有效Python表达式,并返回一个对象

    tuple(s)

    将序列 s 转换为一个元组

    list(s)

    将序列 s 转换为一个列表

    set(s)

    转换为可变集合

    dict(d)

    创建一个字典。d 必须是一个序列 (key,value)元组。

    frozenset(s)

    转换为不可变集合

    chr(x)

    将一个整数转换为一个字符

    unichr(x)

    将一个整数转换为Unicode字符

    ord(x)

    将一个字符转换为它的整数值

    hex(x)

    将一个整数转换为一个十六进制字符串

    oct(x)

    将一个整数转换为一个八进制字符串

    python 的所有数据类型都是类,可以通过 type() 查看该变量的数据类型:

      还可以用 isinstance 来判断

      isinstance 和 type 的区别:

    • type()不会认为子类是一种父类类型。
    • isinstance()会认为子类是一种父类类型。
    >>> class A:
    ...     pass
    ... 
    >>> class B(A):
    ...     pass
    ... 
    >>> isinstance(A(), A)
    True
    >>> type(A()) == A
    False
    >>> isinstance(B(), A)
    True
    >>> type(B()) == A 
    False
    

      

    数据类型 分为数字型和非数字型。

    数字型包括整型,长整型,浮点型,复数型;

    非数字型包括字符串,列表,元组和字典 ;

    非数字型的共同点:都可以使用切片、链接(+)、重复(*)、取值(a[])等相关运算;

    非数字型的不同点:

    列表 可以直接赋值,元组不可以赋值,字典按照 dict[k]=v 的方式赋值。

    Python 运算符

    Python语言支持以下类型的运算符:

    Python算术运算符

    运算符描述实例
    + 加 - 两个对象相加 a + b 输出结果 30
    - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10
    * 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
    / 除 - x除以y b / a 输出结果 2
    % 取模 - 返回除法的余数 b % a 输出结果 0
    ** 幂 - 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000
    // 取整除 - 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

    注意:Python2.x 里,整数除整数,只能得出整数。如果要得到小数部分,把其中一个数改成浮点数即可。

    Python比较运算符

    运算符描述实例
    == 等于 - 比较对象是否相等 (a == b) 返回 False。
    != 不等于 - 比较两个对象是否不相等 (a != b) 返回 true.
    <> 不等于 - 比较两个对象是否不相等 (a <> b) 返回 true。这个运算符类似 != 。
    > 大于 - 返回x是否大于y (a > b) 返回 False。
    < 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 (a < b) 返回 true。
    >= 大于等于 - 返回x是否大于等于y。 (a >= b) 返回 False。
    <= 小于等于 - 返回x是否小于等于y。 (a <= b) 返回 true。

    Python赋值运算符

    运算符描述实例
    = 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
    += 加法赋值运算符 c += a 等效于 c = c + a
    -= 减法赋值运算符 c -= a 等效于 c = c - a
    *= 乘法赋值运算符 c *= a 等效于 c = c * a
    /= 除法赋值运算符 c /= a 等效于 c = c / a
    %= 取模赋值运算符 c %= a 等效于 c = c % a
    **= 幂赋值运算符 c **= a 等效于 c = c ** a
    //= 取整除赋值运算符 c //= a 等效于 c = c // a

    Python位运算符

    按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:

    下表中变量 a 为 60,b 为 13,二进制格式如下:

    a = 0011 1100
    
    b = 0000 1101
    
    -----------------
    
    a&b = 0000 1100
    
    a|b = 0011 1101
    
    a^b = 0011 0001
    
    ~a  = 1100 0011
    运算符描述实例
    & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
    | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
    ^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
    ~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。
    << 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
    >> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111

    Python逻辑运算符

    运算符逻辑表达式描述实例
    and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
    or x or y 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10。
    not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False

    Python成员运算符

      包括字符串,列表或元组。

    运算符描述实例
    in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
    not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

    Python身份运算符

    身份运算符用于比较两个对象的存储单元

    运算符描述实例
    is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
    is not is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

    注: id() 函数用于获取对象内存地址。

    is 与 == 区别:

      is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等

      这里 is 和 == 类似编译原理中传值与传地址。又或者说是 is 只是传递的指针,判断是否指向同一个地址块,这样 is 两边的参数指向内存中同个地址块,毕竟我家电视跟你电视不是同一个东西。而 == 则是仅仅判断值相同

    以下测试情况会在交互模式下出现,脚本模式 is 和 == 结果是一样的。

      python中会为每个出现的对象分配内存,哪怕他们的值完全相等(注意是相等不是相同)。如执行a=2.0,b=2.0这两个语句时会先后为2.0这个Float类型对象分配内存,然后将a与b分别指向这两个对象。所以a与b指向的不是同一对象:

    >>> a=2.0
    >>> b=2.0
    >>> a is b
    False
    >>> a==b
    True
    >>> e
    

      但是为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象,python采取重用对象内存的办法,如指向a=2,b=2时,由于2作为简单的int类型且数值小,python不会两次为其分配内存,而是只分配一次,然后将a与b同时指向已分配的对象:

    >>> a=2
    >>> b=2
    >>> a is b
    True
    >>> a==b
    True
    

      如但果赋值的不是2而是大的数值,情况就跟前面的一样了:

    >>> a=4444
    >>> b=4444
    >>> a is b
    False
    >>> a==b
    True
    

      

    Python运算符优先级

    运算符描述
    ** 指数 (最高优先级)
    ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
    * / % // 乘,除,取模和取整除
    + - 加法减法
    >> << 右移,左移运算符
    & 位 'AND'
    ^ | 位运算符
    <= < > >= 比较运算符
    <> == != 等于运算符
    = %= /= //= -= += *= **= 赋值运算符
    is is not 身份运算符
    in not in 成员运算符
    not or and 逻辑运算符
  • 相关阅读:
    如何选择数据科学最好的Python IDE?
    Python代码详解:入门时间序列分类
    2月编程语言排行榜:Python 稳坐前三,Java依旧第一
    写 Python 时的 5 个坏习惯
    Python的多线程threading和多进程multiprocessing
    Python看春运,万条拼车数据背后的春节迁徙地图
    python数据分析案例实战——融360客户贷款风险预测(信用卡)
    情人节攻略:用Python撒狗粮的正确姿势
    Python函数式编程
    python基础
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/8245228.html
Copyright © 2011-2022 走看看