What to look after to decide if Python code is v2 or v3
我是Python新手,决定安装Anaconda和Python v3。 当我尝试运行我在网上找到的例子时,即使没有改变它们也常常不起作用。 我假设有时候我试图运行第2版脚本。 在代码中要查找哪些简单的标记来判断是否是这种情况?
-
这是非常广泛的; 你基本上要学习2/3之间的差异。
-
您可以将print用作语句而不是函数。
-
对我来说最简单的标记是print语句。 如果它的声明是它的Python 2,如果它的一个函数是它的Python 3。
-
print x明确地将脚本标识为Python 2,但print(x)并未明确地将脚本标识为Python 3,因为它在两个版本中都是有效的语法。
-
绝对将代码标记为Python3的一件事是函数注释。 def f(a: int, b: list) -> tuple: return (a,b)将在python 2中引发语法错误
确定是否为Python 3和Python 2创建脚本的最简单方法(我发现)是尝试查找print语句,如果print语句在参数周围有括号,则为Python 3创建脚本,如果不是,则为为Python 2制作。
例如。
Python 2代码看起来像
print"Hello World"
Python 3代码看起来像print("Hello World")
-
是的,我一直在做太多的C编程和更多的习惯。 我会快速编辑出来。
-
正如上面的评论所指出的,这是证据,但不是证明。 那还有什么需要寻找的?
-
除非是Python 2代码且作者使用from __future__ import print_function
-
尽管这可以作为原始度量标准接受,但print("Hello world")在Python 2中也是有效的,即使没有from __future__ import print_function也是如此,并且正在成为我们这些从2到3过渡的人的首选表达式。
-
作为一个评论,对于简单的脚本,很容易为Python2和Python3编写正确的代码。 那么他们会被称为什么?
我会给出一个有效的答案:
除了检查shebang(如果有的话)之外,唯一可靠的方法是尝试使用两个版本编译它如何在不执行它的情况下检查Python脚本的语法?
2to3是一个在两种语言版本之间进行"翻译"的库。该库的文档列出了将python 2转换为python 3代码所做的更改。
改变后的print,ne,dict和sys_exc是我通常看到的4个不同之处。
http://python3porting.com/differences.html
这列出了你在python 2和3之间看到的主要差异。主要功能已被弃用或重命名。