如何为可变长度或 None 的 Python 列表编写注释?
当我这样写时,它会返回一个错误。
def some_function(params: list[str, ...]) # this gives error: `TypeError: 'type' object is not subscriptable`
def some_function(params: List[str, ...]) # this also gives error: TypeError: Parameters to generic types must be types. Got Ellipsis.
为了注释可能为空或包含字符串的可变长度列表,可以使用
list[str]
或
List[str]
(来自
typing
模块)。省略号 (
...
) 不应用于此目的。
以下是正确的注释方法:
from typing import List
def some_function(params: list[str]):
"""
这是一个函数示例。
Args:
params: 字符串列表。
"""
for param in params:
print(param)
some_function(["hello", "world"]) # 有效
some_function([]) # 也有效
说明:
-
list[str]
: 表示包含字符串的列表的类型提示。从 Python 3.9 开始,可以直接使用内置类型list
、dict
和set
进行类型提示,而无需导入typing
模块。 -
List[str]
: 与list[str]
相同,但需要从typing
模块导入。这是 Python 3.9 之前的首选方式。
这两个注释都允许该列表为空或包含任意数量的字符串。
标签:python,python-typing From: 77211615