一、装饰器概念
1、装饰器
2、装饰器目的
装饰器的目的 :装饰器是用于拓展原函数的一种函数,可以在不改变原来函数名或类名的情况下,给原函数增加新的功能。 一般情况下,我们需要改变原函数,直接改原函数的代码即可,但是实际情况中,并不是所有的函数代码(如核心代码)是不允许随意更改的,此时使用装饰器就更为方便。
二、如何创建装饰器
def function1 ( ) :
print ( 'i am a funcation!' )
现需要将该函数运行时记录日志,在该函数里加上打印日志的代码即可
def function1 ( ) :
print ( 'i am a function!' )
print ( 'function1 is running!' )
如果有大批函数都需要加上打印日志的功能,则无法一个一个去改代码,最好能使用一个方法,给所有函数调用。
def log ( func) :
print ( '%s is runnning!' % func. __name__)
return func
@log
def function1 ( ) :
print ( 'i am a function!' )
function1( )
>> >
function1 is runnning!
i am a function!
但是装饰器要求返回的是一个函数对象,所以我们可以将上述代码改造一下,使用嵌套函数,使其返回一个函数对象。
def log ( func) :
def _decoration ( ) :
print ( '%s is runnning!' % func. __name__