2016-11-17 53 views
2

在Python 3,你可以添加说明,以你的函数参数:是否在Python 3中结合了参数描述和类型提示?

def foo(host: 'ip address for connection') 
    cool_stuff() 

,你还可以提供以后可以用mypy检查预期的类型:

def foo(host: str) 
    cool_stuff() 

两者都是非常有用的我眼睛 - 有没有办法将两者结合起来,仍然可以让mypy检查一致性?

回答

4

不,这部分是为什么PEP 484被写入,以提供明确和唯一使用函数注释,类型提示。

具体地在,它指出:

说法

一行指出PEP 3107明确支持在功能注解使用任意表达式。然后新的提议被认为与PEP 3107的规范不兼容。

,并继续说:

我们希望这种类型的提示将最终成为注释单独使用,但是这将需要更多的讨论和初始转出后弃用期Python中的打字模块。

替代品,其中指定这两个被认为是,但显然拒绝由于代码的可读性下降:

尽管所有这些选项,提案已送交允许类型提示以及其他形式的注解共存的个人论点。一个提议表明,如果给定参数的注释是字典文字,则每个键代表不同的注释形式,并且密钥'type'将用于提示类型。 这个想法及其变体的问题是,符号变得非常“嘈杂”,难以阅读。

允许两者都可以击败这个PEP并且使用注释片段。最后,最好的选择是使用良好的ol'docstrings来记录参数,并坚持使用函数注释仅用于类型提示。