python typing 模块分析 Union Optional Any

ython typing是python的基础模块,里边有很多看似普通但是确很重要的基础类型和特殊类型, 例如与所有类型都兼容的不受限的特殊类型typing.Any,联合类型typing.Union,可选类型typing.Optional

python typing是python的基础模块,里边有很多看似普通但是确很重要的基础类型和特殊类型, 例如与所有类型都兼容的不受限的特殊类型typing.Any,联合类型typing.Union,可选类型typing.Optional等,由于python的版本更新经常会有向下不兼容的问题,所有经常关注python的选手在预估最基础的版本影响时还是要多关注typing这个模块在每个更新版本中的变化。

python的安全本文不做赘述,如果读者想知道具体的安装步骤可以看读者之前的文章

Union 传多参和返回多值

from typing import Union
def FunkerTest(a:Union[float,int])->Union[float,int]:
  return a*4
def FunkerTest(a: float or int)-> float or int:
  return a*4
def FunkerTest(a: float | int)-> float | int:
  return a*4

以上几种情况都可以是等价的,而最后一种写法在3.10版本后才出现,所以这里也就体现了关注typing模块的重要性

Optional可选类型

Optional[X] 等价于 X | None (或 Union[X, None] ),X | None 的写法 也是在3.10版本后才支持的。如下,传入int或者None皆可。

def FunkerTest(arg: Optional[int] = None) -> None:
    ...

发表回复