python装饰器理解

装饰器,网上有很多文章,描述装饰器,看了总是半知半解,现在是终于明白装饰器的用法了

@deco(arg)
def func(*argc, **argv):
    pass
等同于
#equal 说明:后面的func是指原定义的func,
#前面的func是指使用装饰器“装饰”后,我们再去使用的func定义,有点拗口 : )
func = deco(arg)(func)

于是调用的时候就是:
func(a,b) 等同于调用  deco(arg)(func)(a,b)
不过在声明的时候 deco(arg)(func)已经执行了一次了
>>> def mydeco(func):
	print "wuha..."
	def _mydeco(*argc, **argv):
		print "call func  before..."
		ret = func(*argc, **argv)
		print "call func after..."
		return ret
	print "after wuha..."
	return _mydeco

>>> @mydeco #语法糖,就是 myfunc = mydeco(myfunc)  
def myfunc():
	print "myfunc call"
	return 3

wuha...
after wuha...
>>> myfunc()
call func  before...
myfunc call
call func after...
3
>>> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值