例如:
def foo(bar: int = None):
pass
Run Code Online (Sandbox Code Playgroud)
当我检查barpycharm的类型/注释时,告诉我它是Optional[int].
bar: int = None看起来更干净bar: Optional[int] = None,尤其是当你有 10+ 个参数时。
那么我可以简单地省略Optional吗?像 mypy 或其他 linter 这样的工具是否会将这种情况突出显示为错误?
看起来python本身不喜欢这个想法:
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]
Run Code Online (Sandbox Code Playgroud)