python中的‘@’ 装饰器
示例:
def fun_a(arg):
print('a')
arg()
@fun_a
def fun_b():
print('b')
输出:
C:\Python34\python.exe C:/Users/Administrator/Desktop/test.py
a
b
Process finished with exit code 0
上边的函数fun_a()就是一个装饰器,fun_b()引用了fun_a()函数来装饰自己,其中6-8行就相当于fun_a(fun_b())
形象的理解就是,本来身上穿着短袖,后来又加上(装饰上)一件大衣。而这短袖就是示例的fun_b(),大衣就是fun_a()了。
- 装饰器可以装饰的有:函数、类
- 装饰器本身就是一个函数
装饰器可以提高代码复用率,减少重复代码
使用:
-- coding:utf-8 --
def decorator_name(n): #
pass # 装饰器函数的内容
n() # 必须有,这里的n和上边的n只是一个命名,可以是其他的字母或字符串
@decorator_name
def function_name(): # 被装饰的函数
pass # 函数的内容
上边的function_name()函数被修饰后就是decorator_name(function_name())
还没有评论,来说两句吧...