没有签名推断?

2024-04-26 22:25:06 发布

您现在位置:Python中文网/ 问答频道 /正文

看起来Mypy没有做任何推断签名的事情。对吗?例如:

# types.py
def same_int(x: int) -> int:
    return x

def f(x):
    y = same_int(x)

    # This would be "Unsupported operand types for + ("int" and "str")" 
    # y + "hi"

    return y

f("hi")
f(1) + "hi"

我这样做时没有抱怨:

mypy --check-untyped-defs types.py

Mypy将对f主体中的表达式进行推断(如果--check-untyped-defs处于启用状态)。我想知道用它来推断签名是否有意义。(如果没有,为什么不呢。)


Tags: pyreturndefcheckbehithis事情
1条回答
网友
1楼 · 发布于 2024-04-26 22:25:06

这是一个深思熟虑的设计决策mypy被设计成允许您混合动态代码和类型化代码,主要是为了更容易地转换大型和多样化的代码库+允许您有选择地获得两者的好处。你知道吗

因此,没有类型注释的函数在默认情况下被视为动态类型的函数,并且被隐式地赋予参数和返回类型Any。你知道吗

相关问题 更多 >