为什么Python代码的类型注解会触发SyntaxError语法错误?
报错原因排查
核心SyntaxError诱因
你遇到的语法错误最常见的触发原因是运行代码的Python版本过低:
- 函数参数类型标注(
id: str、name: str)和返回值类型标注(-> None)是Python 3.5版本才正式加入的语法特性,如果你使用Python 2.x或者3.4及更早版本执行这段代码,解释器无法识别这类语法,就会直接抛出SyntaxError。 - 如果你确认使用的是Python 3.5+版本,请检查这段方法代码是否正确嵌套在类定义的缩进块内:
self是类实例的专属形参,虽然单独书写不属于任何类的方法不会触发语法错误,但后续执行时会抛出NameError。
其他可优化点
你的代码还有两处不符合预期的问题可以调整:
- 函数定义中标注的返回值为
None,但代码末尾return self.nodes实际返回了列表,两者存在冲突。如果你需要返回nodes列表,把返回值标注改为-> list即可;如果不需要返回值,直接删掉return语句就行。 - 不建议使用
id作为参数名,id是Python的内置函数,用作参数名会覆盖原内置函数的功能,建议修改为node_id之类的自定义名称。
内容的提问来源于stack exchange,提问作者isadorasu
相关产品推荐
相关产品推荐

