python带参数的装饰器怎么写?

来源:千锋教育
发布时间:2023-11-13 00:49:16
分享

python带参数的装饰器怎么写?

1、装饰器说明

装饰器看上去并没有任何参数(使用@时被装饰的方法作为隐式参数传递给装饰器)。但是,有时候让装饰器自带一些参数,可以提供更灵活的应用。

2、实例

我们改写requires_ints,使其还可以限制被装饰函数的参数的数量:

fromfunctoolsimportwraps

defrequires_ints(count=0):

defdecorator(func):

@wraps(func)

defwrapper(*args,**kwargs):

values=[iforiinkwargs.values()]

args_list=list(args)+[iforiinkwargs.values()]

ifcount==0:

#Notlimit

pass

eliflen(args_list)>count:

raiseException(f'Thenumberofargumentscannotmorethan{count}')

forarginargs_list:

ifnotisinstance(arg,int):

raiseTypeError('Onlyacceptintegers.')

returnfunc(*args,**kwargs)

returnwrapper

returndecorator

@requires_ints(5)

defadd(*args):

'''Returnthesumofallarguments'''

returnsum(args)

以上就是python带参数装饰器的写法,希望能对大家有所帮助,更多Python学习教程请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • python处理绝对路径和相对路径函数有哪些? python处理绝对路径和相对路径函数有哪些?绝对路径和相对路径是什么?绝对路径:从根文件夹开始,Windows系统以盘符(C:)作为根文件夹,OSX或Linux系统中/作为根文件夹相对路径:文件相对
  • python配置日志记录 python配置日志记录1、三种配置日志记录的方法调用列出的配置方法显式创建记录器,处理器和格式化器。创建日志配置文件并使用fileConfig()函数读取它。创建配置信息字典并将其传递给dictCo
  • pythonOpenCV中的阈值是什么 pythonOpenCV中的阈值是什么1、说明在python的OpenCV中,阈值是图像二值化的必要条件,阈值是指设定一个,对于整个图像来说,比这个值大的像素点的重量值是一个值,或者比这个值小的像素点
  • python基于LBPH的人脸识别操作 python基于LBPH的人脸识别操作基于LBPH的人脸识别操作原理1、LBPH(LocalBinaryPatternHistogram)将检测到的人脸分为小单元,并将其与模型中的对应单元进行比较,对
  • python内置类型性能有哪些? python中内置类型性能有哪些?1、timeit模块timeit模块用于测试和测量一小段Python代码的执行速度的类。classtimeit.Timer(stmt=‘pass’,setup=‘pa
  • python如何配置Logging处理器 python中如何配置Logging处理器处理器对象负责分配适当的日志消息(基于日志消息的严重性)到处理器指定的目标。Logger对象可以使用addHandler()方法将零个或多个处理器对象添加到自