Python全栈开发:装饰器实例

#!/usr/bin/env python
# -*- coding;utf-8 -*-
"""
    1、将outer函数放入内存
    2、遇见@ + 函数名,则将该函数转换为装饰器,并将@ + 函数名之后的最近的函数作为被装饰的对象
    3、将inner()放入内存,返回inner
    4、被装饰的对象函数调用时f1(),执行inner函数内容,遇见调用被装饰的对象时,调用被装饰函数,继续执行函数体,返回r
"""

def outer(func):
    def inner(*args, **kwargs):
        print("前面")
        r = func(*args, **kwargs)
        print("后面")
        return r
    return inner

@outer
def f1(*args, **kwargs):
    print(*args, **kwargs)
f1(11, 22)

@outer
def f2(a, b):
    print(a + b)

def f3(*args, **kwargs):
    print(*args)
    print(**kwargs)
li = {1: 1, 2: 2}
f3(11, 22, {1: 2})

  

posted @ 2017-03-02 21:41  倪兴国  阅读(164)  评论(0编辑  收藏  举报