运行 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 中运行我的代码时出现错误如何修复该错误? [复制]