插件窝 干货文章 Python类型提示中如何判断UnionType是否包含特定类型?

Python类型提示中如何判断UnionType是否包含特定类型?

类型 Union type specific 73    来源:    2025-03-15

在Python的类型提示中,Union 类型用于表示一个值可以是多种类型中的一种。从Python 3.10开始,Union 类型被 | 操作符替代,例如 int | str 表示一个值可以是 intstr 类型。

要判断一个 Union 类型是否包含特定类型,可以使用 typing 模块中的 get_args 函数来获取 Union 类型的所有可能类型,然后检查特定类型是否在其中。

以下是一个示例代码,展示如何判断 Union 类型是否包含特定类型:

from typing import Union, get_args

# 定义一个 Union 类型
MyUnionType = Union[int, str, float]

# 获取 Union 类型的所有可能类型
args = get_args(MyUnionType)

# 检查特定类型是否在 Union 类型中
specific_type = str
if specific_type in args:
    print(f"{specific_type} is in the Union type.")
else:
    print(f"{specific_type} is not in the Union type.")

在这个例子中,get_args(MyUnionType) 返回一个包含 int, str, 和 float 的元组。然后我们检查 str 是否在这个元组中。

如果你使用的是Python 3.10及以上版本,可以使用 | 操作符来定义 Union 类型,并且 get_args 仍然适用:

from typing import get_args

# 使用 | 操作符定义 Union 类型
MyUnionType = int | str | float

# 获取 Union 类型的所有可能类型
args = get_args(MyUnionType)

# 检查特定类型是否在 Union 类型中
specific_type = str
if specific_type in args:
    print(f"{specific_type} is in the Union type.")
else:
    print(f"{specific_type} is not in the Union type.")

这两种方法都可以用来判断 Union 类型是否包含特定类型。