python2x和python3的区别

时间:2024-11-05 16:03:50

1,源码的区别

py2x:源码比较混乱,重复代码较多,冗余

py3x: 源码崇尚优美,代码清晰简单

2,用户交互的区别:

py2x:python2中input的到的数据类型为int型,Python2x是 raw_input()得到是str字符串 py3x python3x中是 input()得到是字符串str

3, print的区别:

py2x: python2X,print时加()或者加引号""。 py3x: python3X,print时必须加()。

4, 默认编码的区别:

py2x: Python2.x对于代码的默认字符编码为ASK-II,因此打印内容无法包含中文字符串; 解决的方法为在代码首行加上: # -*-coding:UTF-8 -*- py3x: python3X的默认编码是utf-8,无需对代码编码进行设置.

5, 类的区别:

py2x: python2x中的类没有继承object的都是经典类遵循深度优先算法,继承object才是新式类,遵循广度优先算法。

py3x: 在python3x所有类都是新式类,遵循广度优先算法.有mro方法

6, super()的区别:

首先python2x和python3x中都有super()方法

py2x: Python2x的类中有super方法,但是必须传参数(子类名,子类对象)

py3x: python3x的类中是直接调用无序传参

7, Ture和False 的区别:

py2x: True 和 False 在 Python2 中是两个全局变量,可以为其赋值或者进行别的操作, 初始数值分别为1和0,虽然修改是违背了python设计的原则,但是确实可以更改.

py3x: python3x中修正了这个变量,让True或False不可变

8, 迭代器的区别:

py2x: 当中许多返回列表的方法,如range,字典对象的 dict.keys()、dict.values() 方法, map、filter、zip; 并且迭代器必须实现next方法

py3x: 将返回列表的方法改为了返回迭代器对象,内置了__next__,不用特意去实现next

10, nonlocal的区别:

py2x: python2x中没有nonlocal,没有办法在嵌套函数中将变量声明为一个非局部变量,只能在函数中声明全局变量

py3x: nonlocal将变量声明为一个非局部变量 11,字符串区别: py2x: unicode类型表示字符串序列,str类型表示字节序列 py3x: str类型表示字符串序列,byte类型表示字节序列

12,1/2的结果区别 py2x: 返回0 py3x: 返回0.5,没有了int和long的区别

13,比较运算符的区别 py2x: Python2支持<>作为!=的同义词 py3x: python3只支持!=, 不再支持<> 为了简化这个转换过程,Python 3自带了一个叫做2to3的实用脚本(Utility Script), 这个脚本会将你的Python 2程序源文件作为输入,然后自动将其转换到Python 3的形式.