python闭包与装饰器

闭包

总共三句话:
1、在一个外函数中定义了一个内函数
2、内函数里运用了外函数的临时变量
3、外函数的返回值是内函数的引用
以上,就构成了一个闭包。

多装饰器调用顺序

# coding:utf8
import functools


def login1(func):
    @functools.wraps(func)
    def inner(*args, **kwargs):
        print('----login1_1------')
        ret = func(*args, **kwargs)
        print('----login1_2------')
        print(ret)
        return ret

    return inner


def login2(func):
    @functools.wraps(func)
    def inner(*args, **kwargs):
        print('----login2_1------')
        ret = func(*args, **kwargs)
        print('----login2_2------')
        return ret

    return inner


@login1
@login2
def test(t):
    print('t = ', t)
    return 'aaa'


test(1)

运行结果:

----login1_1------
----login2_1------
t =  1
----login2_2------
----login1_2------
aaa

你可能感兴趣的:(python闭包与装饰器)