python 单分派泛函数

python 单分派泛函数

python3.4 中新增了一个泛函数装饰器,它可以让你的函数,根据参数类型的不同,执行不同的代码(注意,它只能查找第一个参数的类型)

譬如:

from functools import singledispatch


@singledispatch  # 加装饰器,变成泛函数
def test(obj):
	print("obj is: ", obj)


@test.register(int)  # 注册泛函数的其他类型
def _(obj):  # 泛函数针对某个数据类型的专门函数,名字无关紧要
	print('Int obj:', obj)


@test.register(str)
def _(obj):
	print("Str obj:", obj)


@test.register(list)  # 可以同时注册多个类型
@test.register(dict)
def _(obj):
	print(f"{type(obj).__name__} obj", obj)


if __name__ == "__main__":
	test(2)
	test("2")
	test({2:'a'})
	test([2])
posted @ 2022-07-15 17:12  wztshine  阅读(62)  评论(0编辑  收藏  举报