python2与python3之间的主要区别

python2与python3之间的主要区别

  • print

py2:print语句,语句就意味着能够直接跟要打印的东西,若是后面接的是一个元组对象,直接打印python

py3:print函数,函数就觉得这必需要加上括号才能调用,若是接元组对象,能够接收多个位置参数,并能够打印函数

若是但愿在 Python2 中 把 print 当函数使用,那么能够导入 future 模块 中的 print_function编码

下面有个示例:设计

# py2
>>> print("hello", "world")
('hello', 'world')
# py3
>>> print("hello", "world")
hello world
# py2
>>> print("hello", "world")
('hello', 'world')
>>> from __future__ import print_function
>>> print("hello", "world")
hello world
  • 输入函数

py2:input_raw()code

py3:input()对象

  • 在使用super()的不一样

py2:必须显示的在参数中写上基类ip

py:直接无参数调用便可utf-8

  • 1/2的结果

py2:返回0ci

py3:返回0.5,没有了int和long的区别unicode

  • 编码

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