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

使用mypy类型检查时,Union类型函数参数如何设置默认值?

正确的类型标注+默认值写法

嘿,这个坑我之前踩过!你把默认值的位置放错啦——默认值是属于函数参数的属性,不是Union类型的一部分,所以不能写到Union的括号里。

正确的基础语法写法

直接把默认值放在整个类型标注的后面就可以了,示例如下:

from typing import Union, List

def your_function(x: Union[int, List[int]] = 10) -> None:
    # 这里写你的函数逻辑
    if isinstance(x, int):
        print(f"单个整数: {x}")
    elif isinstance(x, list):
        print(f"整数列表: {x}")

Python 3.10+ 更简洁的写法

如果你用的是Python 3.10及以上版本,还可以用PEP 604引入的|运算符替代Union,代码会更清爽,mypy完全支持这个语法:

def your_function(x: int | List[int] = 10) -> None:
    # 函数逻辑同上
    pass

为什么你的写法无效?

Union[int = 10, List[int]]这种写法是错误的,因为Union的作用是定义一组可选的类型集合,它的参数只能是类型对象,不能带默认值这种参数属性。默认值是给函数参数本身设置的,所以必须放在类型标注的外侧,用=直接赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:57:28