from functools import singledispatch
@singledispatch
def fun(arg, verbose=False):
if verbose:
print("Let me just say,", end=" ")
print(arg)
@fun.register
def _(arg: int, verbose=False):
if verbose:
print("Strength in numbers, eh?", end=" ")
print(arg)
@fun.register
def _(arg: list, verbose=False):
if verbose:
print("Enumerate this:")
for i, elem in enumerate(arg):
print(i, elem)
if __name__ == '__main__':
fun(1, verbose=True) # Strength in numbers, eh? 1
fun([1, 2]) # 0 1 1 2
fun(2.0) # 2.0
python >= 3.4 版本
可以针对不同参数类型进行不同逻辑操作
没有注册类型会执行fun默认函数