小编Rom*_*lov的帖子

如何对 Python 函数进行类型注释,以仅在输入为 None 时将其标记为返回 None?

我们的代码中有一个典型的数据转换模式:当值为 None 时,我们让它通过。例如,

def capitalize(value):  
    if value is None:  
        return None  
    return value.capitalize()
     
# usage example:
assert capitalize(None) is None
assert capitalize("hello world") == "Hello world"
Run Code Online (Sandbox Code Playgroud)

我可以这样注释它:

from typing import Optional


def capitalize(value: Optional[str]) -> Optional[str]:  
    if value is None:  
        return None  
    return value.capitalize()
Run Code Online (Sandbox Code Playgroud)

看起来不错,但是下面的代码

capitalize("Hello world").split()
Run Code Online (Sandbox Code Playgroud)

总是会让mypy抱怨。

error: Item "None" of "Optional[str]" has no attribute "split"
Run Code Online (Sandbox Code Playgroud)

有没有办法用类型注解来表达“None总是转换为None,str总是转换为str”的转换规则?

python type-hinting mypy python-typing

1
推荐指数
1
解决办法
606
查看次数

标签 统计

mypy ×1

python ×1

python-typing ×1

type-hinting ×1