例如:
def foo(bar: int = None):
pass
当我判断bar
的类型/注释时,pycharm告诉我它是Optional[int]
.
bar: int = None
看起来比bar: Optional[int] = None
干净得多,尤其是当你有10个以上的参数时.
所以我可以省略Optional
吗?像mypy或其他Linter这样的工具会将这种情况强调为错误吗?
看起来python本身不喜欢这个 idea :
In [1]: from typing import Optional
In [2]: from inspect import signature
In [3]: def foo(a: int = None): pass
In [4]: def bar(a: Optional[int] = None): pass
In [5]: signature(foo).parameters['a'].annotation
Out[5]: int
In [6]: signature(bar).parameters['a'].annotation
Out[6]: typing.Union[int, NoneType]