python居然还有Union类型?
本文将介绍python的Union类型,及其在类型注解和函数参数中 的用法。Union类型允许我们指定一个变量可以接受多个可能的类型。
什么是Union类型?
在Python中,Union类型是一种用于表示一个变量可以是多个不同类型之一的类型注解。它是typing模块中的一个类,可以与其他类型一起使用,以指定一个变量可以接受的多个类型。
Union[tpye1, type2, ...]
# 这里的type1、type2等代表要包含在Union类型中的类型,可以是任何合法的类型,包括内置类型、自定义类型和其它Union类型。
Union类型应用于类型注解
在函数定义中,可以使用Union类型注解来指定一个参数可以接受多个类型。例如,我们定义一个函数,返回其输入的值的2倍,其参数类型可以是字符串,可以是整数,代码如下:
from typing import Union
def double_value(value:Union[str, int]) -> Union[str, int]:
if isinstance(value, str):
return value + value
elif isinstance(value, int):
return value * 2
else:
raise ValueError("Unsupported type")
在上面的代码中,参数value的类型注解为Union[str, int],表示value可以是字符串或整数类型之一。函数内部使用isinstance()函数来检查参数的类型,然后据此执行相应的操作。
Union类型应用于变量声明
在变量声明中,可以使用Union类型来指定一个变量可以接受多个类型。例如,声明一个变量x,使其可以接受整型或浮点型之一,代码如下:
from typing import Union
x:Union[int, float]
以上代码中,变量x的类型注解为Union[int, float],表示x可以是整型或浮点型之一。
Union类型应用与返回值类型
在函数定义中,可以使用Union类型注解来指定函数的返回值可以是多个类型之一。例如,定义一个函数,使其可以在不同输入参数条件下返回不同类型的值,代码如下:
from typing import Union
def get_value() -> Union[str, int, float]:
#根据不同的参数条件返回不同类型的值
if condition1:
return "hello"
elif condition2:
return 36
else:
return 1.25
以上代码中,函数get_value()的返回值类型注解为Union[str, int, float],表示该函数可以返回字符串、整数或浮点数类型之一。
Union类型应用于类型组合
Union类型还可以与其它类型一起使用,来指定更加复杂的类型组合。例如,定义一个函数,使其参数既可以是整数,也可以是一个列表,代码如下:
from typing import Union, List
def process_data(data:Union[int, List[int]]) -> None:
if isinstance(data, int):
print(data)
elif isinstance(data, list):
for item in data:
print(item)
else:
raise ValueError("Unsupported type")
以上代码中,参数data的类型注解为Union[int, List[int]],表示data可以是整数或整数列表类型之一。
Summary
python中的Union类型允许我们指定一个变量可以接受多个可能的类型,其在类型注解和函数参数中非常有用,可以提高代码的可读性和可维护性。另外,我们还可以使用Union类型来指定一个参数可以接受多个类型,声明一个变量可以接受多个类型,以及指定函数的返回值可以是多个类型之一。此外,Union类型还可以与其他类型一起使用,来指定更加复杂的类型组合。
作者:小白冲鸭