Python 3.5 类型化的 NamedTuple 语法产生 SyntaxError
Posted
技术标签:
【中文标题】Python 3.5 类型化的 NamedTuple 语法产生 SyntaxError【英文标题】:Python 3.5 typed NamedTuple syntax produces SyntaxError 【发布时间】:2017-06-19 13:07:27 【问题描述】:当我尝试新输入的namedtuple
语法时,我收到SyntaxError: invalid syntax
错误:
class Employee(NamedTuple):
name: str
id: int
在 Python 3.5.2 中,尽管根据 the documentation 它应该从 3.5+ 开始有效。我错过了什么吗?我在代码中从typing
导入了NamedTuple
。
【问题讨论】:
【参考方案1】:声明您正在使用的name
和id
字段类型的语法需要Python 3.6 or up。 Python 3.5 不支持所需的变量级类型提示。
来自typing.NamedTuple
documentation:
3.6 版更改:添加了对PEP 526 变量注释语法的支持。
使用文档中也包含的向后兼容语法:
Employee = NamedTuple('Employee', [('name', str), ('id', int)])
因此将字段名称列为(name, type)
元组。
如果您使用的是 Python 3.5,则可能需要切换到 Python 3.5 version of the documentation(左上角有一个选择器,或者您可以将 URL 中的 3
替换为 3.5
) .
【讨论】:
在文档顶部说“3.5 版中的新功能”。编辑哦,我明白了...这是每个部分。 @daj:是的,typing
模块是 Python 3.5 中的新模块。注释变量的附加语法(如此处用于将name
声明为str
和id
为int
)需要Python 3.6。
@daj:如果您使用的是 Python 3.5,则可以切换到特定于版本的文档:docs.python.org/3.5/library/typing.html#typing.NamedTuple。请注意那里的 URL 中的3.5
。以上是关于Python 3.5 类型化的 NamedTuple 语法产生 SyntaxError的主要内容,如果未能解决你的问题,请参考以下文章