📜  python3转python(1)

📅  最后修改于: 2023-12-03 14:46:20.206000             🧑  作者: Mango

从 python3 转 python: 踩坑指南

转换代码是开发中不可避免的。在 Python 中,要将代码从 Python 3 转换为 Python 2,需要对语言的大量变化进行了解。本文会解读这些变化,并帮助你理解如何正确地进行转换。

基础语法

在 Python 3 中,print 是一个函数,需要加上括号。例如,print("hello world")。而在 Python 2 中,print 是一个语句,不需要加括号。

Python 2 中,比较操作符 <> 在 Python 3 中被移除。取而代之,Python 3 中添加了新的操作符 !=

字符串

Python 3 中的字符串是 Unicode 字符串,而 Python 2 则默认使用 ASCII 字符串。在使用字符串时,需要注意它们的类型。

如果要在 Python 3 中使用 ASCII 字符串,可以将字符串前缀加上字母 b。例如:b"hello world"。而在 Python 2 中,可以使用"hello world"

在 Python 2 和 Python 3 中,字符串相加的方式也有所不同。在 Python 3 中,只能将字符串拼接到一起,例如:"hello" + "world"。而在 Python 2 中,可以把字符串和其他类型进行拼接,例如:"hello" + str(2)

输入输出

在 Python 2 中,输入函数为raw_input()。而在 Python 3 中,输入函数为input()。如果你使用了 Python 2 的 raw_input(),需要改为 Python 3 的 input()

在 Python 3 中,文件打开返回的是一个字符串,而在 Python 2.7 中,它返回的是一个文件对象。如果你想在 Python 3 中打开文件,需要使用with open(filename, 'r') as file:这样的方式。

在 Python 2 中,文件读写时会默认使用二进制模式。而在 Python 3 中,如果不加模式,则默认使用文本模式。如果你要在 Python 3 中进行二进制读写,需要加上“b”字节。

异常处理

在 Python 2 中,异常的语法为 except Exception, e:。而在 Python 3 中,应该写成 except Exception as e:。读者需要注意这种语法的变化。

其他

除了上面提到的变化,还有一些其他需要注意的地方:

  • Python 3 中移除了 reduce() 函数,在 Python 2 中可以使用它进行递归运算。
  • Python 3 中添加了新的字典视图,可以使用 dict.values()、dict.keys() 和 dict.items() 进行访问。
  • 在 Python 3 中,你可以在 locals() 和 globals() 上使用这样的语法:locals()['foo'] = x,在 Python 2 中是不行的。

以上只是一些 Python 3 和 Python 2 不同的变化,并不是所有的变化。如果你遇到了其他问题,或者有一些其他问题需要注意,请记得在评论区留言。