闭包
def test(a,b): def test_in(x): print(a*x+b) return test_in c = test(1,2) c(1)
输出
3
装饰器
def test(func): def inner(): print("---验证通过---") func() return inner #@test实际上是在执行test1 = test(test1) @test def test1(): print("----1----") @test def test2(): print("----2----") test1() test2()
输出
---验证通过--- ----1---- ---验证通过--- ----2----
多个装饰器
注意:
1、装饰顺序,从下往上
def test1(func): def inner(): return func() + "a" return inner def test2(func): def inner(): return func() + "b" return inner @test1 @test2 def test3(): return "test3" print(test3())
输出
test3-b-a
通用型装饰器
def test(func): def inner(*args,**kwargs): print("---验证通过---") ret = func(*args,**kwargs) return ret return inner #test1 = test(test1) @test def test1(a,b): print("----1----") return a+b @test def test2(): print("----2----") print(test1(1,2)) test2()