Python2.7到3.x迁移指南
Python语言从2.7版本升级到3.x版本后,有一些重要的语法和功能改变。如果你正在将Python2.7代码迁移到Python3.x,你需要注意以下内容。
使用2to3工具
2to3是Python3.x自带的工具,可以将Python2.7代码转换为Python3.x代码。它可以通过命令行或者GUI工具使用。
在命令行中运行以下命令:
2to3 your_python2_file.py
这将会把your_python2_file.py文件转换成Python3.x格式。2to3还支持一些参数,如-r参数可以递归转换一个目录下的所有.py文件:
2to3 -r your_python_scripts_directory/
改变print语句的格式
在Python2.7中,print语句是这样的:
print "Hello, World!"
在Python3.x中,print被改为了一个函数。所以,新的print语句是这样的:
print("Hello, World!")
如果在Python2.7中你使用了多参数的print语句,那么需要将它改写成Python3.x的形式:
print "The sum of", x, "and", y, "is", x + y
# 改写为:
print("The sum of {} and {} is {}".format(x, y, x + y))
改变除法运算符
在Python2.7中,整数相除得到的结果也是整数。比如,9/4的结果是2。在Python3.x中,整数相除得到的结果是实数。比如,9/4的结果是2.25。如果你想在Python2.7中使用这种方式进行除法运算,可以在两个整数中至少有一个加上一个".0"。
# 在Python2.7中
print 9.0/4
# 在Python3.x中
print(9/4)
示范1:改变字符串和Unicode的处理
在Python3.x中,所有的字符串都是Unicode字符串,因此你不需要再使用“u”前缀。如果你在Python2.7中使用了“u”前缀,可以将其去掉。
# 在Python2.7中
print u"Hello, World!"
# 在Python3.x中
print("Hello, World!")
在Python2.7中,使用字符串的decode和encode方法进行字符串和Unicode之间的转换。在Python3.x中,这些方法被移除了。如果你想将一个字符串转换为Unicode,可以使用str类型的构造函数。如果你想将一个Unicode字符串转换为普通字符串,可以使用Unicode字符串的encode方法。
# 在Python2.7中
my_unicode_string = u"Hello, World!"
my_string = my_unicode_string.encode('utf-8')
# 在Python3.x中
my_string = str(my_unicode_string)
my_unicode_string = my_string.encode('utf-8')
示范2:改变xrange函数的名称和range函数的功能
在Python2.7中,range函数返回一个列表。如果你想返回一个可迭代对象,可以使用xrange函数。在Python3.x中,xrange函数被移除了,而range函数返回一个可迭代对象。
# 在Python2.7中
for i in xrange(5):
print i
# 在Python3.x中
for i in range(5):
print(i)
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python2.7到3.x迁移指南 - Python技术站