from typing import overload, Union
# 使用@overload装饰的“假”函数
@overload
def process(data: int) -> None:
...
@overload
def process(data: str) -> None:
...
# 没有@overload装饰的“真”函数
def process(data: Union[int, str]) -> None:
if isinstance(data, int):
print(f"Processing integer: {data}")
elif isinstance(data, str):
print(f"Processing string: {data}")
# 调用process函数时,会根据传入的参数类型选择执行逻辑
process(123) # 输出: Processing integer: 123
process("hello") # 输出: Processing string: hello
其中process(123)在看声明的时候只会看到def process(data: int) -> None:函数声明