Python中typing库中 Union 和 Optional 的具体区别

在 Python 的 typing 模块中,UnionOptional 是两种不同的类型提示工具,它们在使用场景和含义上有所区别。

  1. Union:
    • Union 用于指定一个变量可以是多种类型中的一种。
    • 语法: Union[type1, type2, ...]
    • 例如,Union[int, float] 表示一个变量可以是整数类型或者浮点数类型。
from typing import Union

def square(value: Union[int, float]) -> Union[int, float]:
    return value * value

result1 = square(5)     # 返回整数类型 25
result2 = square(2.5)   # 返回浮点数类型 6.25

  1. Optional:
    • OptionalUnion 的一个特殊情况,用于表示一个变量可以是某种类型或者 None
    • 语法: Optional[type]
    • 例如,Optional[int] 表示一个变量可以是整数类型或者 None
from typing import Optional

def divide(dividend: float, divisor: Optional[float]) -> Optional[float]:
    if divisor is None:
        return None
    return dividend / divisor

result1 = divide(10, 2)   # 返回 5.0
result2 = divide(10, None) # 返回 None

在这个示例中,divide 函数接受两个参数 dividenddivisordivisor 参数的类型被标注为 Optional[float],表示它可以是浮点数类型,也可以是 None。在函数内部,如果 divisorNone,函数会返回 None,否则执行除法操作。

因此,Union 用于指定一个变量可以是多种类型中的一种,而 Optional 用于表示一个变量可以是某一种类型或者 None

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值