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

Python泛型是否支持传入数组参数?如何动态构造Union类型提示

解决方案

全版本通用写法(兼容Python 3.8+)

所有泛型类型的下标语法本质是调用__getitem__方法,你手动写的origin[args[0], args[1]]会被自动打包成origin.__getitem__((args[0], args[1]))执行,所以完全不需要写一堆长度判断逻辑,直接把参数列表转成元组传入即可:

from typing import Union

# 运行时生成的类型列表
permitted_types = [int, str, bool, float, list, dict]

# 直接转元组传入方括号即可构造联合类型
union = Union[tuple(permitted_types)]

你原本的冗余逻辑可以直接简化为一行:

return origin[tuple(args)]

高版本简化写法

  • 如果你使用Python 3.11及以上版本,原生支持泛型方括号内的可迭代对象解包语法,你问题里写的Union[*permitted_types]本身就是合法语法,升级Python版本即可直接运行。
  • 如果你使用Python 3.10及以上版本,也可以通过|运算符累加构造联合类型:
from functools import reduce
import operator

permitted_types = [int, str, bool, float, list, dict]
union = reduce(operator.or_, permitted_types)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:36:00