python装饰器
1 写在前面 python中使用@放在函数上方便定义一个装饰器,很多朋友觉得使用装饰器太魔幻,始终不知道怎么灵活使用。 要想做到灵活使用,得首先明白它的本质。今天,我试着用最通俗的语言,几行代码和小例子来解释装饰器的本质。 2 小例子 这是一个装饰器: def call_print ( f ) : def g ( ) : print ( 'you\'re calling %s function' % ( f . __name__ , ) ) return g 使用call_print装饰器: @call_print def myfun ( ) : pass @call_print def myfun2 ( ) : pass myfun ( ) 后返回: In [ 27 ] : myfun ( ) you're calling myfun function In [ 28 ] : myfun2 ( ) you're calling myfun2 function 3 使用call_print 你看,@call_print放置在任何一个新定义的函数上面,都会默认输出一行,你正在调用这个函数的名。 这是为什么呢?注意观察新定义的call_print函数 ( 加上@后便是装饰器 ) : def call_print ( f ) : def g ( ) : print ( 'you\'re