You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为默认值为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)

关键说明:

  1. 原写法错误的核心是把inp的类型限定为None,导致后续赋值列表时类型不匹配。正确的类型需同时包含None和目标列表类型。
  2. 原函数中append的是字符串"a",所以列表元素类型应为str,而非你之前写的int,需对应一致才能通过类型检查。

内容的提问来源于stack exchange,提问作者diegus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:20:30