功能注释:PEP-3107
我遇到了演示Python3功能注释的一小段代码。这个概念很简单,但是我想不出为什么要在Python3中实现这些功能或对其有什么好处。也许可以启发我吗?
这个怎么运作:
def foo(a: 'x', b: 5 + 6, c: list) -> max(2, 9): ... function body ...
在参数后冒号后面的所有内容均为“注释”,而在后面的信息->为函数返回值的注释。
->
foo.func_annotations将返回一个字典:
{'a': 'x', 'b': 11, 'c': list, 'return': 9}
提供此功能有什么意义?
我认为这实际上很棒。
来自学术背景,我可以告诉您,注释已证明对启用像Java这样的语言的智能静态分析器非常有用。例如,您可以定义语义,例如状态限制,允许访问的线程,体系结构限制等,然后有很多工具可以读取这些内容并进行处理,以提供超出编译器的保证。您甚至可以编写检查先决条件/后置条件的东西。
我觉得这样的事情在Python中特别需要,因为它的类型较弱,但是实际上没有任何结构可以使它变得简单明了,并成为正式语法的一部分。
注解还有其他用途,无法保证。我可以看到如何将基于Java的工具应用于Python。例如,我有一个工具,可让您为方法分配特殊警告,并在调用它们时向您提供指示,以指示您应阅读其文档(例如,假设您有一个不能用负值调用的方法,但是名称不直观)。通过注释,我可以为Python技术性地编写类似的内容。同样,如果存在正式语法,则可以编写基于标签将大型方法组织起来的工具。