越来越多的库要放弃 Python 2 了,强哥也开始转向 Python 3 了。最近的我的项目开始用 Python3 写了,也领会了一下 2 和 3 的区别。次要的一些区别在以下几个方面:
print 函数
整数相除
Unicode
异样解决
xrange
map 函数
不反对 has_key
print 函数
Python 2 中 print 是语句(statement),Python 3 中 print 则变成了函数。在 Python 3 中调用 print 须要加上括号,不加括号会报 SyntaxError
Python 2
print “hello world”
输入
hello world
Python 3
print(“hello world”)
输入
hello world
print “hello world”
输入
File “<stdin>”, line 1
print "hello world"
^
SyntaxError: Missing parentheses in call to ‘print’
整数相除
在 Python 2 中,3/ 2 的后果是整数,在 Python 3 中,后果则是浮点数
Python 2
Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。绝对于 Python 的晚期版本,这是一个较大的降级。
为了不带入过多的累赘,Python 3.0 在设计的时候没有思考向下相容。
许多针对晚期 Python 版本设计的程式都无奈在 Python 3.0 上失常执行。
为了关照现有程式,Python 2.6 作为一个过渡版本,根本应用了 Python 2.x 的语法和库,同时思考了向 Python 3.0 的迁徙,容许应用局部 Python 3.0 的语法与函数。
新的 Python 程式倡议应用 Python 3.0 版本的语法。
除非执行环境无奈装置 Python 3.0 或者程式自身应用了不声援 Python 3.0 的第三方库。目前不声援 Python 3.0 的第三方库有 Twisted, py2exe, PIL 等。
大多数第三方库都正在致力地相容 Python 3.0 版本。即便无奈立刻应用 Python 3.0,也倡议编写相容 Python 3.0 版本的程式,而后应用 Python 2.6, Python 2.7 来执行。
Python 3.0 的变动次要在以下几个方面:
print 函数
print 语句没有了,取而代之的是 print() 函数。Python 2.6 与 Python 2.7 局部地反对这种模式的 print 语法。在 Python 2.6 与 Python 2.7 外面,以下三种模式是等价的:
print “fish”
print (“fish”) #留神 print 前面有个空格
print(“fish”) #print() 不能带有任何其它参数
然而,Python 2.6 理论曾经反对新的 print()语法:
字符编码:py3 中默认字符编码是 unicode;py2 中默认字符编码是 ASCII,如果文件中呈现了中文,须要在顶部退出 coding 申明 HantecMarkets 亨达返佣 https://www.kaifx.cn/broker/h…
coding:utf8
让用户输出:py3 中间接应用 input();py2 中须要应用 raw_input()
range 和 xrange:py3 中的 range == py2 中的 xrange,返回相似迭代器的货色,节俭内存空间
语句变函数: py3 中为 print(), exec() 是一个办法,必须加上括号;py2 中为 print, exec
数据传输:py3 中 socket 传过来的数据是 byte 类型 / hashlib 包 update 也须要传 bytes 类型的数据;py2 中则能够间接传入 str, e.g