【问题标题】:Running version specific code in python gives me error在 python 中运行特定于版本的代码给了我错误
【发布时间】:2019-05-06 21:11:52
【问题描述】:

我是 Python 语言的新手。我看到了一个关于如何在 python 脚本中运行特定于版本的代码的 StackOverflow 问题。我写了以下代码:

import sys

mylist = []
mylist.append(1)
mylist.append(2)
mylist.append(3)

str=""

if sys.version_info[0] == 2:
    print("version 2\n")
    for x in mylist:
        str += "{}".format(x)
    print(str)
else:
    print("version 3 or above\n")
    for x in mylist:
        print(x, end='')
    print()

但是这段代码给了我一个错误如下 -

文件“test.py”,第 18 行 打印(x,结束='') SyntaxError: 无效语法

如果我在 Python2 中运行此代码,它会在 else 部分出现错误。为什么会进入else块?

【问题讨论】:

  • 错误表示它无效语法;当 Python 尝试 parse 代码而不是在执行代码时,这是失败的。对于语法更改,请使用 __future__ 导入(在本例中为 print_function)。
  • @jonrsharpe 是的,我知道,但是为什么即使我使用的是 Python2.x,它也会进入 else 块?
  • 不是进入else块;同样,这是在 解析 时间,而不是执行。 Python 必须先解析整个脚本才能运行它。
  • 那么,没有办法在 Python 中运行特定于版本的代码吗?就像如果我想在设置 Python2.x 的情况下使用带有“end=”的打印,就像在 if else 块中一样?
  • 您能完整阅读我的第一条评论吗?附带说明:您使用的方法适用于特定于版本的功能只要它在所有版本中的语法有效

标签: python python-3.x python-2.x


【解决方案1】:

错误发生在编译时,而不是程序执行时。 编译器将尝试在 python 2 中编译 if..else 块。 Python2 的编译器不支持给定的print(x, end='') 语法。

【讨论】:

    【解决方案2】:

    SyntaxError 发生在您的代码运行之前,python 将检查代码的所有行并根据 python2.x 中不正常的 python 解释器版本查找语法问题,这就是您收到该错误的原因(没有进入区块,因为你的代码还没有启动)解决方案是使用__future__并导入print_function

    【讨论】:

      猜你喜欢
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 2021-12-01
      • 2015-02-04
      • 2019-11-01
      • 2021-10-13
      相关资源
      最近更新 更多