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

使用元组作为默认参数时的类型标注问题

解决元组默认参数的类型标注问题

你可以通过变长元组类型标注来解决这个问题,不需要改用None作为默认值。具体来说,在Tuple类型中添加...来表示该元组可以包含任意数量指定类型的元素,语法如下:

from typing import Tuple, Literal

def run_package(some_settings: Tuple[Literal["setting_1", "setting_2", "setting_3"], ...] = ("setting_1",)):
    pass

其他可选方案

  • 如果不需要严格限定参数必须是元组,也可以用Sequence类型标注,它兼容元组和列表,同时保持默认值为元组:
    from typing import Sequence, Literal
    
    def run_package(some_settings: Sequence[Literal["setting_1", "setting_2", "setting_3"]] = ("setting_1",)):
        pass
    
  • 还可以提前定义类型别名,让代码更简洁:
    from typing import Tuple, Literal
    
    SettingType = Literal["setting_1", "setting_2", "setting_3"]
    
    def run_package(some_settings: Tuple[SettingType, ...] = ("setting_1",)):
        pass
    

这些方案都能保留元组作为默认参数的直观写法,同时满足类型标注要求,避免可变默认参数的潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:02:34