目的:在不修改原来函数代码的前提下,使用这个功能,可以使得之后这个函数被调用时增加额外的功能。
#2.定义装饰器 def deco (fun): print "i am deco,i can do something deco here" return fun @deco#3.使用装饰器的标志 def foo():#1.原来的函数 print "i am the function to be deco" #4.调用 foo()
- 执行结果:
i am deco,i can do something deco here
i am the function to be deco
- 说明:
按上述顺序,
1.原来的函数是foo,他的功能是打印出 i am the function to be deco 这句话;
2.我们定义了一个装饰器deco,他将打印出 i am deco,i can do something deco here 这句话;
3.我们在要使用deco这个装饰器的函数的定义前,加上这句话@deco
4.下次,我们调用函数foo的时候,就会为foo增加装饰器的功能
注意,我们并没有修改原来函数foo的代码,这样就实现了在不修改原来函数代码的前提下增加额外的功能