Dan*_*Dan 9 python mypy python-typing
我有以下功能:
import pandas as pd
def eq(left: pd.Timestamp, right: pd.Timestamp) -> bool:
return left == right
Run Code Online (Sandbox Code Playgroud)
当我通过 Mypy 运行它时,出现以下错误:
错误:从声明为返回“bool”的函数返回任何内容
我相信这是因为 Mypy 不知道pd.Timestamp所以将其视为Any. (使用 Mypyreveal_type函数表明 Mypy 将left和right视为Any。)
处理这个问题以阻止 Mypy 抱怨的正确方法是什么?
你可以将其转换为布尔值。
import pandas as pd
def eq(left: pd.Timestamp, right: pd.Timestamp) -> bool:
return bool(left == right)
Run Code Online (Sandbox Code Playgroud)
如果 mypy 不喜欢这样,您可以cast从输入中导入并使用它将其转换为布尔值。
import pandas as pd
from typing import cast
def eq(left: pd.Timestamp, right: pd.Timestamp) -> bool:
result = bool(left == right)
return cast(bool, result)
Run Code Online (Sandbox Code Playgroud)