Mypy:没有签名推断?
Mypy: no signature inference?
看起来 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
已打开)。我想知道使用它来做出和应用关于签名的推论是否有意义。 (如果不是,为什么不呢。)
这是一个深思熟虑的设计决定 -- mypy 旨在让您将动态代码和类型化代码混合在一起,主要是为了更轻松地转换大型和多样化的代码库 + 让您有选择地获得两者的好处。
因此,没有类型注释的函数默认被视为动态类型函数,并被隐式地赋予参数和 Any
类型 Any
。
看起来 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
已打开)。我想知道使用它来做出和应用关于签名的推论是否有意义。 (如果不是,为什么不呢。)
这是一个深思熟虑的设计决定 -- mypy 旨在让您将动态代码和类型化代码混合在一起,主要是为了更轻松地转换大型和多样化的代码库 + 让您有选择地获得两者的好处。
因此,没有类型注释的函数默认被视为动态类型函数,并被隐式地赋予参数和 Any
类型 Any
。