【问题标题】:Why didn't PEP 3107 (or 484) include syntax for annotating global/local variables?为什么 PEP 3107(或 484)不包含注释全局/局部变量的语法?
【发布时间】: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


【解决方案1】:

幸运的是 Python 3.6 支持变量注解:PEP 526

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-19
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2016-01-17
    相关资源
    最近更新 更多