Python - typing 模块 —— Optional
前言
typing 是在 python 3.5 才有的模块
前置学习
Python 类型提示:https://www.cnblogs.com/poloyy/p/15145380.html
常用类型提示
https://www.cnblogs.com/poloyy/p/15150315.html
类型别名
https://www.cnblogs.com/poloyy/p/15153883.html
NewType
https://www.cnblogs.com/poloyy/p/15153886.html
Callable
https://www.cnblogs.com/poloyy/p/15154008.html
TypeVar 泛型
https://www.cnblogs.com/poloyy/p/15154196.html
Any Type
https://www.cnblogs.com/poloyy/p/15158613.html
Union
https://www.cnblogs.com/poloyy/p/15170066.html
Optional
可选类型
和默认参数有什么不一样
- 官方原话:可选参数具有默认值,具有默认值的可选参数不需要在其类型批注上使用 Optional,因为它是可选的
- 不过 Optional 和默认参数其实没啥实质上的区别,只是写法不同
- 使用 Optional 是为了让 IDE 识别到该参数有一个类型提示,可以传指定的类型和 None,且参数是可选非必传的
# 可选参数def foo(arg: int = 0) -> None:
...
# 不传 arg 默认取 0
foo()
重点
- Optional[int] 等价于 Union[int, None]
- 意味着:既可以传指定的类型 int,也可以传 None
实际栗子
def foo_func(arg: Optional[int] = None):print(arg)
foo_func()
foo_func(1)
# 输出结果
None
1
使用默认参数的写法
def foo_func(arg: int = None):print(arg)
foo_func()
foo_func(1)
# 输出结果
None
1
这种写法,Pycharm 并不会 warning
重点
Optional[] 里面只能写一个数据类型
# 正确Optional[str]
Optional[List[str]]
Optional[Dict[str, Any]]
# 错误
Optional[str, int]
Optional[Union[str, int, float]]
以上是 Python - typing 模块 —— Optional 的全部内容, 来源链接: utcz.com/z/389272.html