python functools.singledispatch的使用,针对函数不同的传参类型,做出不同的操作。

背景

希望函数根据传参类型不同,做出不同的操作.
根据传入变量的类型来判断需要输出的内容,常见的做法是把这个函数做成一个分派函数,在这个函数中通过大量的if/elif/else来判断条件然后来执行对应的操作。但是这样做不便于模块的拓展,而且还显得笨重,时间一长这个函数会显得很大.

实现

from functools import singledispatch
@singledispatch
def typecheck(a):
    print(a, type(a), 'a')


@typecheck.register(str)
def _(text):
    print(text, type(text), 'str')


@typecheck.register(list)
def _(text):
    print(text, type(text), 'list')

@typecheck.register(int)
def _(text):
    print(text, type(text), 'int')

if __name__ == '__main__':
    typecheck([1,2,3,4])


输出:

[1, 2, 3, 4] <class 'list'> list

学习地址

https://docs.python.org/zh-cn/3/library/functools.html
https://www.jianshu.com/p/33e1db06f2d5

posted @   Tarzen  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-01-29 uos安装vscode后,打开文件夹默认程序变成了vscode
点击右上角即可分享
微信分享提示