python 修饰器

Python修饰器

python 修饰器是python 语法中一个很神奇的存在,我们可以这样理解它:

  • 在python中,一切皆为对象,函数也是对象,我们定义的名称只是绑定到这些对象的标识符。 函数也不例外,它们也是对象(带有属性)。 各种不同的名称可以绑定到同一个功能对象。
  • python 中的函数参数可以是函数(因为都是对象嘛),如果你曾经用过map,filter等方法,那么你一定会对此有所了解。
  • 修饰器的作用就是动态的为旧函数增加新的语句,把旧函数“装饰”一番。
    下面是董付国老师的《Python程序设计基础(第2版)》中的一段代码:
def before(func):   # 定义修饰器
    def wrapper(*args, **kwargs):    #新函数
        print ('Before function called.')    #新增的语句
        return func(*args, **kwargs)    #返回旧函数
    return wrapper    #返回新函数
def after(func):    # 定义修饰器
    def wrapper(*args, **kwargs):    #新函数
        result = func(*args, **kwargs)    #调用旧函数
        print('After function called.')    #增加新语句
        return result    #返回旧函数
    return wrapper    #返回新函数
@before    #外层的修饰
@after    #内层的修饰
def test()    #可以理解为print(3)先增加了after修饰的语句后的新函数
    print(3)  #又增加了before修饰的语句

input:
>>> test()

output:
>>> Before function called.
    3
    After function called.

你可能感兴趣的:(学习感悟)