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()了。

  1. 装饰器可以装饰的有:函数、类
  2. 装饰器本身就是一个函数
  3. 装饰器可以提高代码复用率,减少重复代码

    使用:

# -*- coding:utf-8 -*-
def decorator_name(n):  #
    pass  # 装饰器函数的内容
    n()  # 必须有,这里的n和上边的n只是一个命名,可以是其他的字母或字符串


@decorator_name
def function_name():  # 被装饰的函数
    pass  # 函数的内容

上边的function_name()函数被修饰后就是decorator_name(function_name())

你可能感兴趣的:(python,3)