闭包
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()

浙公网安备 33010602011771号