我试图了解在键入函数时如何使用重载装饰器。如果我编写以下代码并通过 mypy 运行它:
from typing import Union, overload
@overload
def myfunc(a: float, b: float) -> float: ...
@overload
def myfunc(a: int, b: int) -> int: ...
def myfunc(a: Union[float, int], b: Union[float, int]) -> Union[float, int]:
return a + b
Run Code Online (Sandbox Code Playgroud)
然后我收到“错误:重载函数签名 2 永远不会匹配:签名 1 的参数类型相同或更广泛在 1 个文件中发现 1 个错误(已检查 1 个源文件)”
我不明白为什么签名 1(即浮点数)的参数类型比签名 2(即整数)更广泛。
这里发生了什么?