#coding:utf-8
'''装饰器实质就是闭包的使用'''
def deco(func):
def in_deco(x,y):
print "in_deco"
func(x,y)
print "call deco"
#如果这里不显示返回的话,默认是None
return in_deco
'''在还没有使用@deco来装饰bar函数时,bar函数指向它自己的函数体,
当我们使用了deco来进行装饰后,解释器执行到@deco的时候,做两件事:
1、把bar函数当参数,调用deco函数
2、把deco函数的返回值赋值给bar,此时bar就指向in_deco的引用
当我们再次调用bar函数时,其实我们是在调用in_deco函数,
在in_deco调用过程中我们又调用了bar原来自己的函数体的语句
'''
@deco
def bar(x,y):
print "in bar:",x+y
print type(bar)
bar(1,2)
python装饰器的学习笔记三
最新推荐文章于 2024-05-21 11:53:02 发布