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()

结果如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值