Python 中是否有相当于 Typescript 感叹号的东西?

zmb*_*mbq 5 python typescript python-typing

我开始在 Python 中使用类型提示。我有以下功能:

def func(arg: Optional[str]):
    # ...
    # make sure arg is a string and not None
    do_something(arg)  # do_something expects a string
Run Code Online (Sandbox Code Playgroud)

仅当 arg 确实是一个字符串而不是 None 时,才能到达对 的调用do_something,但 mypy 无法自行解决(这不是 mypy 问题,它无法理解所有内容)。所以 mypy 标记了调用,do_something因为 arg 可能是 None

在 Typescript 中,可以使用感叹号来处理类似的情况arg!- 感叹号告诉静态分析器arg不是未定义的。Python中有类似的东西吗?

小智 4

如果您的逻辑包含以下内容,Mypy 不应标记任何内容:

if arg is None:
    return None
Run Code Online (Sandbox Code Playgroud)

如果不可能,您也可以在警告之前添加断言:

assert x is not None
Run Code Online (Sandbox Code Playgroud)