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
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-01-29 uos安装vscode后,打开文件夹默认程序变成了vscode