python学习 通用装饰器及装饰器传参数

在之前的博客已经讲过装饰器,并且我们知道根据不同的函数(有无参数,有无返回值)可以用不同的装饰器,但是不是可以归纳一下,写出一个通用的装饰器呢?
程序如下:

def func(functionName):
	def func_in(*args,**kwargs):
    	print ('-----生成记录-----')
    	ret = functionName(*args,**kwargs)
    	return ret
return func_in

@func
def test(a,b):
	print ('----test----')
	print ('A=%d,B=%d'%(a,b))
	return 'haha'
	
exe = test(10,19)
print ('返回值是:%s'%exe)

运行结果:
在这里插入图片描述
这样,我们就会得到一个既可以传参数,又可以传递返回值的装饰器。

带参数的装饰器:

程序:

def func_arg(arg):
def func(functionNum):
    def func_in():
        print ('==记录日志==')
        print ('----%s-----'%arg)
        functionNum()
    return func_in
return func
#1.先执行func_arg('haha')函数,这个函数return 的结果是func这个函数的引用
#2.@func
#3.使用@func对test进行装饰
@func_arg('haha')
def test():
print ('--test--')

test()

结果如下:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/IWTK_wcl/article/details/83240767
今日推荐