• python2和python3有什么区别


    Python版本区别,Python 3和Python 2区别详解

    Python 版本分为两大流派,一个是 Python 2.x 版本,另外一个是 Python 3.x 版本,Python 官方同时提供了对这两个版本的支持和维护。

    2020 年 1 月 1 日,Python 官方终止了对 Python 2.7 版本(最后一个 Python 2.x 版本) 的支持,这意味着开发者不会在接收到任何来自 Python 2.7 的错误修复或安全更新。自此 Python 2 完全退休,Python 3 时代正式来临。

    尽管 Python 2 已退出历史舞台 ,但国内外一些互联网公司仍在使用 Python 2.7 开发程序,同时为了让大家更好地了解 Python 3 ,我们非常有必要知道这两个版本间存在区别。

    你也许会问,为什么终止支持了,还会有公司再使用?其实,版本的更换是一项庞大、复杂的工作,一些小型的互联网公司在人力、财力不足的情况下,只能要继续使用低版本的 Python,只有万不得已时才会更新版本。

    和 Python 2.x 版本相比,Python 3.x 版本在语句输出、编码、运算和异常等方面做出了一些调整,本节就对这些调整逐一地做简单介绍。

    注意:本节适合有 Python 基础的学员阅读,初学者可先跳过本节,建议整体学完 Python 后,再回过头来阅读本文。

    Python 3.x print()函数代替了print语句

    在 Python 2.x 中,输出数据使用的是 print 语句:

    1. >>> print "3,4"
    2. 3,4
    3. 或者
    4. >>> print(3,4)
    5. (3,4)

    但是在 Python 3.x 中,print 语句没有了,取而代之的是 print() 函数,例如:

    1. >>> print(3,4)
    2. 3 4

    如果还像 Python 2.x 中那样使用 print 语句,Python 编译器就会报错,例如:

    1. >>> print "3,4"
    2.   File "", line 1
    3.     print "3,4"
    4.               ^
    5. SyntaxError: Missing parentheses in call to 'print'

    Python 3.x 默认使用 UTF-8 编码

    Python 2.x 默认采用的 ASCII 编码,而 Python 3.x 默认使用 UTF-8 编码,相比来说,UTF-8 编码可以很好地支持中文或其它非英文字符。

    例如,输出一句中文,使用 Python 2.x 和 Python 3.x 的区别如下:

    1. #Python 2.x
    2. >>>str ="C语言中文网"
    3. >>>str
    4. 'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91'
    5. #Python 3.x
    6. >>>str ="C语言中文网"
    7. >>>str
    8. 'C语言中文网'


    不仅如此,在 Python 3.x 中,下面的代码也是合法的:

    1. >>>中国="China"
    2. >>>print(中国)
    3. China

    Python 3.x 除法运算

    和其他语言相比,Python 的除法运算要高端很多,它的除法运算包含 2 个运算符,分别是 / 和 //,这 2 个运算符在 Python 2.x 和 Python 3.x 的使用方法如下:

     / 运算符

    在 Python 2.x 中,使用运算符 / 进行除法运算的方式和 Java、C 语言类似,整数相除的结果仍是一个整数,浮点数除法会保留小数点部分,例如:

    1. >>>1/2
    2. 0
    3. >>>1.0/2
    4. 0.5

    但是在 Python 3.x 中使用 / 运算符,整数之间做除法运算,结果也会是浮点数。例如:

    1. >>>1/2
    2. 0.5
    3. 运算符 //

    使用运算符 // 进行的除法运算叫做 floor 除法(“地板除”),也就是输出不大于结果值的一个最大的整数(向下取整)。此运算符的用法在 Python 2.x 和Python 3.x 中是一样的,举个例子:

    1. #Python 2.x
    2. >>> -1//2
    3. -1
    4. #Python 3.x
    5. >>> -1//2
    6. -1

    Python 3.x 异常

    在 Python 3.x 版本中,异常处理改变的地方主要在以下几个方面:

    • 在 Python 2.x 版本中,所有类型的对象都是直接被抛出的,但是在 Python 3.x 版本中,只有继承 BaseException 的对象才可以被抛出。
    • 在 Python 2.x 版本中,捕获异常的语法是“except Exception,var:”;但在 Python 3.x 版本中,引入了 as 关键字,捕获异常的语法变更为 “except Exception as var:”。
    • 在 Python 3.x 版本中,处理异常用 “raise Exception(args)”代替了“raise Exception,args”。
    • Python 3.x 版本中,取消了异常类的序列行为和 .message 属性。


    有关 Python 2.x 版本和 Python 3.x 版本处理异常的示例代码如下所示:

    1. #Python 2.x
    2. >>> try:
    3. ...  raise TypeError,"类型错误"
    4. ... except TypeError,err:
    5. ...  print err.message
    6. ...
    7. 类型错误
    8. #Python 3.x
    9. >>> try:
    10. ...     raise TypeError("类型错误")
    11. ... except TypeError as err:
    12. ...     print(err)
    13. ...
    14. 类型错误

    Python 3.x 八进制字面量表示

    在 Python 3.x 中,表示八进制字面量的方式只有一种,并且必须写成“0o1000”这样的方式,原来“01000”的方式不能使用了。举个例子:

    1. #Python 2.x
    2. >>> 0o1000
    3. 512
    4. >>> 01000
    5. 512
    6. #Python 3.x
    7. >>> 01000
    8.   File "", line 1
    9.     01000
    10.         ^
    11. SyntaxError: invalid token
    12. >>> 0o1000
    13. 512

    Python 3.x 不等于运算符

    Python 2.x 中的不等于运算符有 2 种写法,分别为 != 和 <>,但在 Python 3.x 中去掉了 <>,只有 != 这一种写法,例如:

    1. #Python 2.x
    2. >>> 1!=2
    3. True
    4. >>> 1<>2
    5. True
    6. #Python 3.x
    7. >>> 1!=2
    8. True
    9. >>> 1<>2
    10.   File "", line 1
    11.     1<>2
    12.       ^
    13. SyntaxError: invalid syntax

    Python 3.x 输入差异

    Python 2.x 中提供两种类型输入函数,分别是 input() 和 raw_input(),前者默认返回的 int(整数类型) 类型,而后者总是返回 str(字符串类型);Python 3.x 中只提供了一个输入函数 input(),该函数的使用方法与 raw_input() 相似,总是返回 str  类型。示例如下:

    1. Python 2.x
    2. a=input("请输出:")
    3. 请输出:123
    4. >>> type(a)
    5. <type 'int'>
    6. b=input("请输入")
    7. 请输出:"C语言中文网"
    8. >>> type(b)
    9. <type 'str'>
    10. c=raw_input("请输入:")
    11. 请输入:123
    12. >>>type(c)
    13. <type 'str'>
    14. # Python3.x
    15. >>> d=input("请输入:")
    16. 请输入:123
    17. >>> d
    18. '123'
    19. >>> type(d)
    20. <class 'str'>

    Python 3.x 数据类型

    Python 3.x 中对数据类型也做了改动,比如说:

    • Python 3.x 去除了 long 类型,现在只有一种整形 int,但它的行为就像是 Python 2.x 版本中的 long。
    • Python 3.x 新增了 bytes 类型,对应 Python 2.x 版本的八位串,定义 bytes 字面量的方法如下所示:
      1. >>>b=b'China'
      2. >>>type(b)
      3. <type 'bytes'>
      字符串对象和 bytes 对象可以使用 .encode() 或者 .decode()方法相互转化,例如:
      1. >>>s=b.decode()
      2. >>>s
      3. 'China'
      4. >>>b1=s.encode()
      5. >>>b1
      6. b'China'

    • Python 3.x 中,字典的 keys()、items() 和 values() 方法用返回迭代器,且之前的 iterkeys() 等函数都被废弃,同时去掉的还有 dict.has_key(),改为用 in 替代。
  • 相关阅读:
    Mockito的@Mock与@MockBean
    给出一组正整数arr,你从第0个数向最后一个数,每个数的值表示你从这个位置可以向右跳跃的最大长度,计算如何以最少的跳跃次数跳到最后一个数。
    金蝶云星空企业版v8.0如何通过内网穿透实现异地公网远程访问
    丢失d3dcompiler 47.dll的修复方案,哪个更值得推荐
    解决 /bin/bash^M: bad interpreter: No such file or directory
    vite如何兼容低版本浏览器
    自己编译JDK
    数组复制(java)
    高速DSP系统设计参考指南(五)印制电路板或PCB布局
    javase__进阶 day18 多线程02
  • 原文地址:https://blog.csdn.net/weixin_44711037/article/details/126644316