python2与python3的区别

python2与python3的区别

  1. python3没有了xrange()

    python3的range就是xrange

    python2中,range返回值是list,意味着内存将会分布相应长度的空间给list,而python3返回的是一个range对象,并没有将数据完全实例化,所以内存中只有一个对象的空间,对性能优化还是很有帮助的。

  2. print函数:print语句没有了,取而代之的是print()函数。

  3. unicode

    Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。

    现在, 在 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和 bytearrays。

    由于 Python3.X 源码文件默认使用utf-8编码,这就使得以下代码是合法的:

    >>> 中国 = 'china' 
    >>>print(中国) 
    china
    
  4. 除法运算

    Python中的除法较其它语言显得非常高端,有套很复杂的规则。Python中的除法有两个运算符,/和//

    首先来说/除法:

    在python 2.x中/除法就跟我们熟悉的大多数语言,比如Java啊C啊差不多,整数相除的结果是一个整数,把小数部分完全忽略掉,浮点数除法会保留小数点的部分得到一个浮点数的结果。

    在python 3.x中/除法不再这么做了,对于整数之间的相除,结果也会是浮点数。

    Python 2.x:

    >>> 1 / 2
    0
    >>> 1.0 / 2.0
    0.5
    

    Python3.x:

    >>> 1/2
    0.5
    

    而对于//除法,这种除法叫做floor除法,会对除法的结果自动进行一个floor操作,在python 2.x和python 3.x中是一致的。

    python 2.x:

    >>> -1 // 2
    -1
    

    python3.x:

    >>> -1 // 2
    -1
    

    注意的是并不是舍弃小数部分,而是执行 floor 操作,如果要截取整数部分,那么需要使用 math 模块的 trunc 函数

    python 3.x:

    >>> import math
    >>> math.trunc(1 / 2)
    0
    >>> math.trunc(-1 / 2)
    0
    
  5. 异常

    在 Python 3 中处理异常也轻微的改变了,在 Python 3 中我们现在使用 as 作为关键词。

    捕获异常的语法由 except exc, var 改为 except exc as var

    使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。 Python 2.6已经支持这两种语法。

    1. 在2.x时代,所有类型的对象都是可以被直接抛出的,在3.x时代,只有继承自BaseException的对象才可以被抛出。

    2. 2.x raise语句使用逗号将抛出对象类型和参数分开,3.x取消了这种奇葩的写法,直接调用构造函数抛出对象即可。

    在2.x时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情,在3.x中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。

你可能感兴趣的:(Python方法)