xone

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

闭包

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

  

posted on 2019-01-14 15:15  周小百  阅读(131)  评论(0编辑  收藏  举报