【发布时间】:2020-03-22 10:48:25
【问题描述】:
我正在开发一个框架,它采用 python 函数并将它们转换为容器化程序。 我需要一种用一些扩展信息来注释函数参数的方法。 为此,我开始使用 Python 的“参数注释”/“类型提示”。 但是我听到一些传言说,将来非类型的注释将变得非法。真的吗? 我的框架可以在注解中使用非类型对象吗?
def my_func(
param1: 'foo',
param2: 'foo bar',
param3: {'a' : 1},
):
pass
【问题讨论】:
-
你从哪里听到这样的谣言?顺便说一句,
param1: 'foo'目前被用作每个 PEP-484 的 forward reference。 -
严格来说,像
typing.List这样的东西已经是非类型对象了。问题是,使用不符合 PEP-484 的注释会继续被接受吗? -
我猜,谣言更像是
eval(annotation_literal)必须有效。 -
您可能对PEP 593 感兴趣,它为您提供了一种创建注释的方法,其中包含类型提示和其他任意表达式的混合。这为您提供了一种将任意元数据附加到注释的方法,同时仍然保持代码与 PEP 484 类型检查器兼容。
标签: python python-3.x annotations type-hinting