首页 > 编程语言 >python functools.singledispatch的使用,针对函数不同的传参类型,做出不同的操作。

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

时间:2023-01-29 11:34:15浏览次数:58  
标签:传参 __ 函数 python typecheck functools singledispatch text

背景

希望函数根据传参类型不同,做出不同的操作.
根据传入变量的类型来判断需要输出的内容,常见的做法是把这个函数做成一个分派函数,在这个函数中通过大量的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,typecheck,functools,singledispatch,text
From: https://www.cnblogs.com/tarzen213/p/17072182.html

相关文章

  • Python工具箱系列(二十四)
    不管多少人黑微软,微软出品的大多数产品都能够深入人心,成为精品。在数据库领域,微软为专业人士提供SQLServer(简称mssql)。为日常办公人士提供Access与Excel这两款数据存储与......
  • Python定义全局变量的用法
    全局变量是编程语言中常见的一种变量,通过全局定义,可以是某对象函数创建,也可以是本程序任何位置创建,能够被本程序中的所有对象或函数进行引用,全局变量的定义有利于程序的变......
  • python 缓存函数结果,下次不会执行函数时直接获取结果[ lru_cache 、cache]
    学习路径:https://www.aiuai.cn/aifarm1963.htmlfromfunctoolsimportlru_cachefrompydanticimportBaseSettingsn=0classSettings(BaseSettings):envir......
  • python入门之str通用操作/索引/切片
    """通用操作str"""str01="二狗"str02="三叔"#字符串拼接str03=str01+str02#字符串累加str01+=str02print(str01)#重复生成元素print(str01*......
  • 关于微信小程序中的导航传参
    声明式导航  编程式导航  接收参数是在页面加载的onload中如何接收页面跳转的参数?通过声明式导航传参或编程式导航传参所携带的参数,可以直接在onLo......
  • Python中的深拷贝与浅拷贝
    Python进阶篇-系列文章全篇......
  • python 运算符
    除法运算(/),整除运算(//),计算求余(%),(**)乘方运算,变量赋值(=),字符串有多种表现形式,用单引号('……')或双引号("……")标注的结果相同,反斜杠\用于转义   >>>17/3 #clas......
  • Python 内置界面开发框架 Tkinter入门篇 乙
    *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/2GFLTstDC7w6u3fTJxflNA本文大概 1685 个字,阅读需花 6 分钟......
  • Python之装饰器
    #装饰器功能说明"""python中的装饰器(decorator)一般采用语法糖的形式,是一种语法格式。比如:@classmethod,@staticmethod,@property,@xxx.setter,@wraps(),@fun......
  • Python之生成器
    """生成器说明:1、生成器一次只返回一个数据;2、yield把函数变成了一个生成器;3、生成器函数的执行过程看起来就是不断地执行->中断->执行->中断的过程;4、一开始,调用......