4

在 Python 3 中,您可以向函数参数添加描述:

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

并且您还可以提供预期的类型,以后可以使用以下命令进行检查mypy

def foo(host: str)
    cool_stuff()

两者在我眼中都非常有用 - 有没有办法将两者结合起来仍然能够让mypy检查一致性?

4

1 回答 1

6

不,这就是编写的部分原因PEP 484,以提供对函数注释和类型提示的清晰和唯一的使用。

特别是在关于现有用途的部分中,它指出:

一行参数指出 PEP 3107 明确支持在函数注释中使用任意表达式。然后认为新提案与 PEP 3107 的规范不兼容。

并继续说:

我们确实希望类型提示最终将成为注解的唯一用途,但这需要额外的讨论和在 Python 首次推出类型模块后的弃用期。

考虑了同时指定两者的替代方案,但由于代码可读性降低而明显被拒绝:

尽管有所有这些选项,但已经传播了一些建议,以允许类型提示和其他形式的注释共存于各个参数。一个提议建议,如果给定参数的注释是字典文字,则每个键代表一种不同形式的注释,并且该键'type'将用于类型提示。这个想法及其变体的问题是符号变得非常“嘈杂”并且难以阅读。

允许两者也将超越此 PEP 的要点并分散注释的使用。最后,您最好的选择是使用良好的 ol' 文档字符串来记录参数,并坚持仅将函数注释用于类型提示。

于 2016-11-17T12:09:01.493 回答