python2与python3之间的主要区别

Posted dreamOnly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python2与python3之间的主要区别相关的知识,希望对你有一定的参考价值。

python2与python3之间的主要区别

(可能自己理解有不到位的地方,以后再回来改)

参考知乎:刘志军,关于《Python 2 和 Python 3 有哪些主要区别?》的回答
https://www.zhihu.com/question/19698598

  • print

py2:print语句,语句就意味着可以直接跟要打印的东西,如果后面接的是一个元组对象,直接打印

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()

py3:input()

  • 在使用super()的不同

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

py:直接无参数调用即可

  • 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

以上是关于python2与python3之间的主要区别的主要内容,如果未能解决你的问题,请参考以下文章

Python2.x与Python3.x的主要区别(转)

python2与python3的区别

Python2与Python3使用区别

Python2与Python3使用区别

Python - Python2与Python3的对比转换与兼容

Python2与Python3的区别