如何为默认值为None的可变函数参数添加类型注解?
正确的类型注解写法
你需要用可选类型标注参数inp,因为它既可以是None,也可以是字符串列表。类型检查器(如mypy)会识别if inp is None分支后的类型转换,不会报错。
分版本实现:
- Python 3.10+(支持
|语法,无需额外导入):
def foo(inp: list[str] | None = None): if inp is None: inp = [] inp.append("a") print(inp)
- Python 3.9及以下(需从
typing导入对应类型):
from typing import Optional, List def foo(inp: Optional[List[str]] = None): if inp is None: inp = [] inp.append("a") print(inp)
关键说明:
- 原写法错误的核心是把
inp的类型限定为None,导致后续赋值列表时类型不匹配。正确的类型需同时包含None和目标列表类型。 - 原函数中
append的是字符串"a",所以列表元素类型应为str,而非你之前写的int,需对应一致才能通过类型检查。
内容的提问来源于stack exchange,提问作者diegus
相关产品推荐
相关产品推荐

