Python 中 @overload
注解可以用来描述一个方法/函数的重载,但是这里的重载和 Java 中
的重载概念不同,在 Python 中仅仅用于描述更具体的类型关系。
假设有以下函数:
从实现我们可以看出函数的返回类型和参数类型是绑定的,不存在输入 int 返回 list 的
情况,但 python 的类型系统无法知道这一点,只能通过 type hint 判断返回类型为
int | list
。
这时候我们就可以使用 @overload
来描述更具体的类型关系:
上述代码的前两个 double 函数的实现用 ...
省略,只用于描述函数签名,这时候如果我
们传入的是 int 参数,python 就会知道返回的也是 int 类型。