在 Python 3 中,您可以向函数参数添加描述:
def foo(host: 'ip address for connection')
cool_stuff()
并且您还可以提供预期的类型,以后可以使用以下命令进行检查mypy
:
def foo(host: str)
cool_stuff()
两者在我眼中都非常有用 - 有没有办法将两者结合起来仍然能够让mypy
检查一致性?
在 Python 3 中,您可以向函数参数添加描述:
def foo(host: 'ip address for connection')
cool_stuff()
并且您还可以提供预期的类型,以后可以使用以下命令进行检查mypy
:
def foo(host: str)
cool_stuff()
两者在我眼中都非常有用 - 有没有办法将两者结合起来仍然能够让mypy
检查一致性?
不,这就是编写的部分原因PEP 484
,以提供对函数注释和类型提示的清晰和唯一的使用。
特别是在关于现有用途的部分中,它指出:
一行参数指出 PEP 3107 明确支持在函数注释中使用任意表达式。然后认为新提案与 PEP 3107 的规范不兼容。
并继续说:
我们确实希望类型提示最终将成为注解的唯一用途,但这需要额外的讨论和在 Python 首次推出类型模块后的弃用期。
考虑了同时指定两者的替代方案,但由于代码可读性降低而明显被拒绝:
尽管有所有这些选项,但已经传播了一些建议,以允许类型提示和其他形式的注释共存于各个参数。一个提议建议,如果给定参数的注释是字典文字,则每个键代表一种不同形式的注释,并且该键
'type'
将用于类型提示。这个想法及其变体的问题是符号变得非常“嘈杂”并且难以阅读。
允许两者也将超越此 PEP 的要点并分散注释的使用。最后,您最好的选择是使用良好的 ol' 文档字符串来记录参数,并坚持仅将函数注释用于类型提示。