#!/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})