我想弄清楚如何正确运行注释或类型提示字符串列表。例如,如果我有这样的功能:
def send_email(self, from_address: str, to_addresses: list[str]):
pass
to_addresses
应该是一个字符串列表。但是当我尝试使用该注释时,我的 Python 3.4.3 解释器中出现以下错误:
TypeError: 'type' object is not subscriptable
我肯定是 list[str]
导致了这个问题,因为如果我将它更改为 str
错误消失了,但这并没有正确反映我对参数的意图。
原文由 gnychis 发布,翻译遵循 CC BY-SA 4.0 许可协议
Python 3.4 没有为其函数注释指定格式,它只是提供了一种机制,允许您使用任何表达式作为注释。如何解释注释取决于您和您使用的库。
Python 3.5 标准化了函数注释用于类型提示的方式,如 PEP 484 中所述。要注释字符串列表,您可以使用
List[str]
,其中List
是从typing
模块导入的。您还可以使用Sequence[str]
如果您的函数接受任何类似列表的序列,或者Iterable[str]
用于任何可迭代对象。从 Python 3.9 开始,您可以使用
list[str]
作为类型注释,不需要导入任何内容。