【问题标题】:Is combining argument descriptions and type hinting possible in Python 3?在 Python 3 中可以结合参数描述和类型提示吗?
【发布时间】:2017-03-31 21:25:29
【问题描述】:

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

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

您还可以提供预期的类型,稍后可以通过mypy 进行检查:

def foo(host: str)
    cool_stuff()

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

【问题讨论】:

    标签: python python-3.x arguments type-hinting mypy


    【解决方案1】:

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

    特别是在section about existing uses 中,它指出:

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

    然后继续陈述:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-05-09
      • 1970-01-01
      • 2019-09-11
      • 2019-06-22
      • 2016-06-09
      • 2020-05-20
      • 2019-07-03
      • 1970-01-01
      • 2017-06-28
      相关资源
      最近更新 更多