越来越多的库要放弃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