运行 python 3 代码时出现 python 2 语法错误

Posted

技术标签:

【中文标题】运行 python 3 代码时出现 python 2 语法错误【英文标题】:python 2 syntax error when running python 3 code 【发布时间】:2018-01-24 08:07:26 【问题描述】:

我有一个如下所示的类

class ExperimentResult(BaseDataObject):
    def __init__(self, result_type: str, data: dict, references: list):
        super().__init__()
        self.type = result_type
        self.references = references
        self.data = data

    def __repr__(self):
        return str(self.__dict__)

代码是用 python 3 编写的,而我试图在 python 2 中运行它。 当我运行它时,我得到了

    def __init__(self, result_type: str, data: dict, references: list):
                                  ^
SyntaxError: invalid syntax

有没有“import_from_future”来解决这个问题?

【问题讨论】:

真正的解决方案是在 Python 2 中完全停止运行任何代码 【参考方案1】:

不,没有__future__ 开关可以在 Python 2 中启用 Python 3 注释。如果您使用注释进行类型提示,请改用 cmets。

有关语法详细信息,请参阅 PEP 484 的 Suggested syntax for Python 2.7 and straddling code 部分和 Type checking Python 2 code section:

对于需要与 Python 2.7 兼容的代码,函数类型注释在 cmets 中给出,因为函数注释语法是在 Python 3 中引入的。

对于您的具体示例,应该是:

class ExperimentResult(BaseDataObject):
    def __init__(self, result_type, data, references):
        # type: (str, dict, list) -> None
        super().__init__()
        self.type = result_type
        self.references = references
        self.data = data

【讨论】:

以上是关于运行 python 3 代码时出现 python 2 语法错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 3 中导入模块时出现 AttributeError

尝试运行已编译的 Cython 代码时出现“python39.dll not found”错误 [重复]

在 python2.7 中运行我的代码时出现错误如何修复该错误? [复制]

Python3:超出资源限制时出现异常或返回代码?

尝试运行可执行 Python 脚本时出现致命的 Python 错误

求大神!运行python时出现Traceback (most recent call last),这是啥错误