python2与Python3之间的主要区别
- print
py2:print语句,语句就意味着可以直接跟要打印的东西,如果后面接的是一个元组对象,直接打印
py3:print函数,函数就以为这必须要加上括号才能调用,如果接元组对象,可以接收多个位置参数,并可以打印
# py2 >>> print("hello", "world") ('hello', 'world') # py3 >>> print("hello", "world") hello world
Python2中输入print后面可以不加()可以加()
Python3中输入print后面必须加()
- 换行
py2中不需要换行输出时,输入后面添加“,”逗号
py3中不需要换行输出时,输入后面添加“end=”””
# py2 >>>print “hello world!”,;print “hi” hello world! hi >>>print “hello world!”;print “hi” hello world hi #py3 >>>print(“hello world!”,end=””) hello world!>>> >>>print (“hello world!”) hello world!
- 输入函数
py2:input_raw()
py3:input()
- 在使用super()的不同
py2:必须显示的在参数中写上基类
py3:直接无参数调用即可
- 1/2的结果
py2:返回0
py3:返回0.5,没有了int和long的区别
- 编码
py2:默认编码ascii
py3:默认编码utf-8
而且为了在py2中使用中文,在头部引入coding声明,不推荐使用
- 字符串
py2:unicode类型表示字符串序列,str类型表示字节序列
py3::str类型表示字符串序列,byte类型表示字节序列
- True和False
py2:True 和 False 在 Python2 中是两个全局变量,可以为其赋值或者进行别的操作,初始数值分别为1和0,虽然修改是违背了python设计的原则,但是确实可以更改
py3:修正了这个变量,让True或False不可变
- 迭代器
py2:当中许多返回列表的方法,如range,字典对象的 dict.keys()、dict.values() 方法, map、filter、zip;并且迭代器必须实现next方法
py3:将返回列表的方法改为了返回迭代器对象,内置了__next__,不用特意去实现next
- nonlocal
py2:没有办法在嵌套函数中将变量声明为一个非局部变量,只能在函数中声明全局变量
py3:nonlocal方法实现了,示例如下:
def func(): c = 1 def foo(): c = 12 foo() print(c) func() #1 def func(): c = 1 def foo(): nonlocal c c = 12 foo() print(c) func() # 12