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

时间:2017-08-16 08:56:35

标签: python python-2.7 python-3.x annotations type-hinting

我的课程类似于以下

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"解决这个问题?

1 个答案:

答案 0 :(得分:7)

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

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

  

对于需要与Python 2.7兼容的代码,函数类型注释在注释中给出,因为函数注释语法是在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