什么是装饰器:
装饰器的作用顾名思义,起到一个装饰的作用,它可以将我们已经写好的函数进行进一步的修饰,但又不将被装饰的函数的代码修改。
为什么用装饰器:
一般来说,如果我们想给原本的函数进行修改的话,最直接的方法是直接修改函数的代码。但如果我们已经在文件中写好了大量的代码,这容易引起写好的代码产生一些意料之外的副作用。在 python 提供了装饰器来实现装饰了函数而又不修改原函数的语法。
如何使用:
使用符号 @ 来表示使用装饰器。实际例子如下
#Situation 1
#当我们正常使用函数时:
def Say_Hello():
print ("Hello!");
renturn 0;
def Say_Name():
print ("Name");
renturn 0;
#正常调用的话如下:
Say_Hello()
Say_Name()
#Situation 2
#如果我们想让每次打招呼时自动说 Name,如下:
def Decoration_Name(fun_c): #定义如何装饰函数
def Wapper(): #封装
fun_c (); #先输出 Hello
print ("Name"); #输出 Name
return Wapper; #返回被装饰后的的函数
def Say_Hello(): #正常定义被装饰的函数
print ("Hello!");
Say_Hello = Decoration_Name(Say_Hello)
#正常调用如下:
Say_Hello()
#输出为:
# Hello!
# Name
#Situation 3
#如果我们使用装饰器 @ 后代码变为如此
def Decoration_Name(fun_c): #定义如何装饰函数
def Wapper(): #封装
fun_c (); #先输出 Hello
print ("Name"); #输出 Name
return Wapper; #返回被装饰后的的函数
@Decoration_Name
def Say_Hello(): #正常定义被装饰的函数
print ("Hello!");
#正常调用
Say_Hello()
#输出为:
# Hello!
# Name