【问题标题】:What to look after to decide if Python code is v2 or v3 [closed]决定Python代码是v2还是v3需要注意什么[关闭]
【发布时间】:2015-10-23 06:48:10
【问题描述】:

我是 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 python-3.x


【解决方案1】:

识别是否为 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 编写正确的代码。那么它们会被称为什么?
【解决方案2】:

http://python3porting.com/differences.html

这列出了您在 python 2 和 3 之间看到的主要区别。主要功能已被弃用或重命名。

【讨论】:

    【解决方案3】:

    2to3 是一个在两种语言版本之间进行“翻译”的库。该库的文档列出了changes it does to translate python 2 to python 3 代码。

    更改后的 print、ne、dict 和 sys_exc 是我通常关注的 4 个差异。

    【讨论】:

      【解决方案4】:

      我会给出一个有效的答案:

      除了检查shebang(如果有的话)之外,唯一可靠的方法是尝试使用How can I check the syntax of Python script without executing it? 的两个版本来编译它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-06
        • 1970-01-01
        • 1970-01-01
        • 2010-09-16
        • 2012-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多