【发布时间】:2016-02-25 10:10:48
【问题描述】:
PEP 3107 描述了向 Python 函数参数和返回值添加注释的语法。 PEP 484 赋予它们意义。
为什么它们不包含注释全局和局部变量的语法?在我看来,允许以下形式的变量声明不会导致与现有 Python 语法发生冲突,并且符合函数参数语法:
x: int
x: int = 3
似乎注释变量被认为很重要:Mypy 使用特殊的 cmets 来注释变量:http://mypy.readthedocs.org/en/latest/type_inference_and_annotations.html#explicit-types-for-variables
【问题讨论】:
-
关于为什么做出决定的推测应该在 Python 邮件列表中查找,在那里讨论了这些 PEP,或者您可以询问 PEP 的作者。 PEP 484 在 PEP 3107 的约束下工作,它可能从未考虑过变量赋值。
-
请注意,名称绑定是.. 棘手的并且不仅仅是赋值(想想
for循环或with ... as ...语句)。无论如何,大多数静态工具都会分析 右侧表达式 生成的内容以将类型分配给名称。
标签: python python-3.x static-analysis type-hinting static-typing