相关疑难解决方法(0)

如果我将默认设置为 None 可以省略 Optional 吗?

例如:

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)

python type-hinting python-3.x mypy python-typing

36
推荐指数
2
解决办法
3403
查看次数

标签 统计

mypy ×1

python ×1

python-3.x ×1

python-typing ×1

type-hinting ×1