• Python3 基础语法


    编码

    默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码:

    # -*- coding: cp-1252 -*- 

    上述定义允许在源文件中使用 Windows-1252 字符集中的字符编码,对应适合语言为保加利亚语、白罗斯语、马其顿语、俄语、塞尔维亚语。

    标识符

    • 第一个字符必须是字母表中字母或下划线 _ 。
    • 标识符的其他的部分由字母、数字和下划线组成。
    • 标识符对大小写敏感。
      在 Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的了。

    python保留字

    保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:

    >>> import keyword
    >>> keyword.kwlist
    ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def',
     'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import',
      'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try',
       'while', 'with', 'yield']

    注释

    Python中单行注释以 # 开头,实例如下:

    # 第一个注释
    print ("Hello, Python!") # 第二个注释 

    执行以上代码,输出结果为:

    Hello, Python!

    多行注释可以用多个 # 号,还有 ‘’’ 和 “”":

    # 第一个注释
    # 第二个注释
     
    '''
    第三注释
    第四注释
    '''
     
    """
    第五注释
    第六注释
    """
    print ("Hello, Python!")

    执行以上代码,输出结果为:

    Hello, Python!

    行与缩进

    python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。
    缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:

    if True:
        print ("True")
    else:
        print ("False")

    以下代码最后一行语句缩进数的空格数不一致,会导致运行错误:

    if True:
        print ("Answer")
        print ("True")
    else:
        print ("Answer")
      print ("False")    # 缩进不一致,会导致运行错误

    以上程序由于缩进不一致,执行后会出现类似以下错误:

     File "test.py", line 6
        print ("False")    # 缩进不一致,会导致运行错误
                                          ^
    IndentationError: unindent does not match any outer indentation level

    多行语句

    Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句,例如:

    total = item_one + 
            item_two + 
            item_three

    在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(),例如:

    total = ['item_one', 'item_two', 'item_three',
            'item_four', 'item_five']

    数字(Number)类型

    python中数字有四种类型:整数、布尔型、浮点数和复数。

    • int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
    • bool (布尔), 如 True。
    • float (浮点数), 如 1.23、3E-2
    • complex (复数), 如 1 + 2j、 1.1 + 2.2j

    空行

    函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
    空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
    记住:空行也是程序代码的一部分。

    对象

    Python 中,一切皆对象。每个对象由:标识(identity)、类型(type)、value(值) 组成。

    1. 标识用于唯一标识对象,通常对应于对象在计算机内存中的地址。使用内置函数 id(obj) 可返回对象 obj 的标识。
    2. 类型用于表示对象存储的“数据”的类型。类型可以限制对象的取值范围以及可执行的 操作。可以使用 type(obj)获得对象的所属类型。
    3. 值表示对象所存储的数据的信息。使用 print(obj)可以直接打印出值。
      对象的本质就是:一个内存块,拥有特定的值,支持特定类型的相关操作。

      结构如下:

    注意点:
    在 Windows 下可以不写第一行注释:
    #!/usr/bin/python3
    第一行注释标的是指向 python 的路径,告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器。
    此外还有以下形式(推荐写法):
    #!/usr/bin/env python3
    这种用法先在 env(环境变量)设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作。

    引用

    在 Python 中,变量也成为:对象的引用。因为,变量存储的就是对象的地址。 变量通过地址引用了“对象”。
    变量位于:栈内存。
    对象位于:堆内存。
    图:

    变量和简单赋值语句

    变量的声明和赋值
    变量的声明和赋值用于将一个变量绑定到一个对象上,格式如下: 变量名 = 表达式 最简单的表达式就是字面量。比如:a = 123 。 运行过程中,解释器先运行右边的表达式, 生成一个代表表达式运算结果的对象;然后,将这个对象地址赋值给左边的变量。

    删除变量和垃圾回收机制 可以通过 del 语句删除不在使用的变量。
    如果对象没有变量引用,就会被垃圾回收器回收,清空内存空间。

    链式赋值
    链式赋值用于同一个对象赋值给多个变量。

    x=y=123 #相当于:x=123; y=123

    系列解包赋值
    系列数据赋值给对应相同个数的变量(个数必须保持一致)

    a,b,c=4,5,6 #相当于:a=4;b=5;c=6 

    常量

    Python 不支持常量,即没有语法规则限制改变一个常量的值。我们只能约定常量的命名规 则,以及在程序的逻辑上不对常量的值作出修改

    数字和基本运算符

    运算符说明示例结果
    +加法3 + 25
    -减法3 - 21
    *乘法3 * 26
    /浮点数除法3 / 21.5
    //整数除法3 //21
    **3 ** 29
    divmod()使用 divmod()函数同时得到商和余数divmod(13,3)(4, 1)

    divmod()是一个函数,我们以后会详细介绍。他返回的是一个元组。
    整数
    Python 中,除 10 进制,还有其他三种进制:

    • 0b 或 0B,二进制 0 1
    • 0o 或 0O,八进制 0 1 2 3 4 5 6 7
    • 0x 或 0X,十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e f

    使用 int()实现类型转换:

    • 浮点数直接舍去小数部分。如:int(9.9)结果是:9
    • 布尔值 True 转为 1,False 转为 0。 如:int(True)结果是 1
    • 字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错
      加粗样式
      使用 bin,oct,hex 可输出数字的二进制,八进制,十六进制形式:
    >>> a=0b111100
    >>> a=60
    >>> bin(a)
    '0b111100'
    >>> oct(a)
    '0o74'
    >>> hex(a)
    '0x3c'

    自动转型: 整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是 10.0
    Python 数字类型转换
    有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

    • int(x) 将x转换为一个整数。
    • float(x) 将x转换到一个浮点数。
    • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
    • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

    整数可以有多大?
    Python2 中,int 是 32 位,可以存储从-2147483648 到 2147483647 的整数(约± 21 亿)。Long 类型是 64 位,可以存储:-263–263-1 之间的数值。 Python3 中,int 可以存储任意大小的整数,long 被取消。
    Python3 中可以做超大数的计算,而不会造成“整数溢出”,这也是 Python 特别适 合科学运算的特点。
    浮点数
    浮点数,称为 float。
    浮点数用 10 ab 形式的科学计数法表示。比如:3.14,表示成:314E-2 或者 314e-2。 这些数字在内存中也是按照科学计数法存储。
    类型转换和四舍五入

    • 类似于 int(),我们也可以使用 float()将其他类型转化成浮点数。
    • 整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是 10.0
    • round(value)可以返回四舍五入的值 注:但不会改变原有值,而是产生新的值

    关于四舍五入的解释
    “4舍6入5看齐,奇进偶不进”我觉得并不是因为浮点数在计算机表示的问题。计算机浮点数的表示是 ieee 定义的标准规则,如果 python 中存在,没道理其他语言中不存在。事实上是因为该取舍方法比过去的 “四舍五入” 方法在科学计算中更准确。而国家标准也已经规定使用 “4舍6入5看齐,奇进偶不进” 取代"四舍五入".从统计学的角度上来讲,如果大量数据无脑的采用四舍五入会造成统计结果偏大。而"奇进偶舍"可以将舍入误差降到最低。
    奇进偶舍是一种比较精确比较科学的计数保留法,是一种数字修约规则。
    其具体要求如下(以保留两位小数为例):
    (1)要求保留位数的后一位如果是4或者4以下的数字,则舍去, 例如 5.214保留两位小数为5.21。
    (2)如果保留位数的后一位如果是6或者6以上的数字,则进上去, 例如5.216保留两位小数为5.22。
    (3)如果保留位数是保留整数部分或保留一位小数,则要根据保留位来决定奇进偶舍:

    >>> round(5.215,2)#实际并没有进位
    5.21
    >>> round(5.225,2)
    5.22
    >>>
    >>> round(1.5)#此处进位
    2
    >>> round(1.5)==round(2.5)#偶数舍去
    True
    >>> round(1.15,1)
    1.1
    >>> round(1.25,1)
    1.2
    >>> round(1.151,1)
    1.2
    >>> round(1.251,1)
    1.3

    (4) 如果保留位数的后一位如果是5,且该位数后有数字。则进上去,例如5.2152保留两位小数为5.22,5.2252保留两位小数为5.23,5.22500001保留两位小数为5.23。
    从统计学的角度,“奇进偶舍”比“四舍五入”要科学,在大量运算时,它使舍入后的结果误差的均值趋于零,而不是像四舍五入那样逢五就入,导致结果偏向大数,使得误差产生积累进而产生系统误差,“奇进偶舍”使测量结果受到舍入误差的影响降到最低。
    增强型赋值运算符
    运算符+、-、*,/、//、**和%和赋值符=结合可以构成“增强型赋值运算符”。 a = a + 1 等价于: a +=1
    时间的表示
    计算机中时间的表示是从“1970 年 1 月 1 日 00:00:00”开始,以毫秒(1/1000 秒) 进行计算。我们也把 1970 年这个时刻成为“unix 时间点”。 这样,我们就把时间全部用数字来表示了。

    python 中可以通过 time.time() 获得当前时刻,返回的值是以秒为单位,带微秒 (1/1000 毫秒)精度的浮点值。
    布尔值
    Python2 中没有布尔值,直接用数字 0 表示 False,用数字 1 表示 True。 Python3 中,把 True 和 False 定义成了关键字,但他们的本质还是 1 和 0,甚至可以和数 字相加。
    其他类型值转换 bool 值时除了 ‘’、""、’’’’’’、""""""、0、()、[]、{}、None、0.0、0L、0.0+0.0j、False 为 False 外,其他都为 True
    比较运算符
    所有比较运算符返回 1 表示真,返回 0 表示假。这分别与特殊的变量 True 和 False 等价。 以下假设变量 a 为 15,变量 b 为 30:
    逻辑运算符

    算符格式说明
    or逻辑或x or y x 为 true,则不计算 y,直接返回 true x 为 false,则返回 y
    and逻辑与x and y x 为 true,则返回 y 的值 x 为 false,则不计算 y,直接返回 false
    not逻辑非not x x 为 true,返回 false x 为 false,返回 true

    同一运算符
    同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址

    运算符描述
    isis 是判断两个标识符是不是引用同一个对象
    is notis not 是判断两个标识符是不是引用不同对象

    is 与 == 区别:

    • is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。
    • == 用于判断引用变量引用对象的值是否相等,默认调用对象的 eq()方法。
      整数缓存问题
      Python 仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对 象。需要注意的是,这仅仅是在命令行中执行,而在 Pycharm 或者保存为文件执行,结果是不一样 的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。
      总结
    • 1、is 比较两个对象的 id 值是否相等,是否指向同一个内存地址;
    • 2、== 比较的是两个对象的内容是否相等,值是否相等;
    • 3、小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用;
    • 4、is 运算符比 == 效率高,在变量和 None 进行比较时,应该使用 is。
      复合赋值运算符
    运算符描述示例等价于
    +=加法赋值字符串拼接sum += n a += “sxt”sum = sum + n a = a + “sxt”
    -=减法赋值num -= nnum = num - n
    *=乘法赋值a *= ba = a * b
    /=浮点除赋值a/=ba = a / b
    =按位或赋值a
    ^=按位异或赋值a^=ba = a^b
    &=按位与赋值a&=ba = a&b
    >>=右移赋值a>>=2a = a>>2
    <<=左移赋值a<<=2a = a<<2
    **=幂运算赋值a**=2a = a**2
    %=取余赋值a%=ba = a % b
    //=整数除赋值a//=ba = a//b

    注:与 C 和 JAVA 不一样,Python 不支持自增(++)和自减(–)

    别废话,拿你代码给我看。
  • 相关阅读:
    Windows共享上网的详细设置
    使用树莓派实现微信远程监控
    数据结构——队列及循环队列
    springmvc web 大文件上传源代码
    springboot web 大文件上传源代码
    jsp web 大文件上传源代码
    csharp web 大文件上传源代码
    c# web 大文件上传源代码
    .net web 大文件上传源代码
    asp.net web 大文件上传源代码
  • 原文地址:https://www.cnblogs.com/lvxueyang/p/13707529.html
Copyright © 2020-2023  润新知