Python - typing 模块 —— Optional

python

前言

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

回到顶部