我试图弄清楚如何正确地对字符串列表进行函数注释或键入提示。例如,如果我有这样一个函数:
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
,错误就会消失,但这并不能正确反映我对参数的意图
此语法现在在Python 3.9+中有效:
但是,在3.9之前,您需要使用导入的
List
或in Python 3.7+来添加在文件顶部,允许使用
list[int]
(例如)Python3.4没有为其函数注释指定格式,它只提供了一种机制,允许您使用任何表达式作为注释。如何解释注释取决于您和您使用的库
Python 3.5标准化了函数注释用于类型暗示的方式,如PEP 484中所述。要注释字符串列表,可以使用
List[str]
,其中List
是从typing
模块导入的。如果函数接受任何类似列表的序列,也可以使用Sequence[str]
,或者对任何iterable使用Iterable[str]
从Python 3.9开始,您可以使用
list[str]
作为类型注释,而不需要导入任何内容在Python3.9+中,} 并使用它
list
(带有小写的l
)可以用于类型注释,并且代码应该按原样工作。在较早版本的Python上,您需要导入^{请注意大写字母
你可能想考虑一些更具体的事情。为什么L
from_address
是str
,而to_addresses
是list[str]
?也许是会有帮助的
相关问题 更多 >
编程相关推荐