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: ...