zoukankan      html  css  js  c++  java
  • 第二十七节 对有参数无返回值的函数进行装饰

    def set_func(func):
        # print('装饰器开始装饰了...')
        def call_func(num):
            print('....权限1.....')
            print('....权限2.....')
            func(num)
        return call_func
        
    @set_func  # 等价于 test1 = set_func(test1) 
    def test1(num):
        print(".......这是test1......%d" % num)
    
    test1(100)
    test1(200) 
    
    # 一个装饰器可以装饰多个函数,并不是函数调用时才装饰,可以在去掉函数调用验证
    # 每装饰一个函数,就会生成一个闭包空间,会生成一个局部变量用来存储原来函数指向的地址,跟类生成一个实例对象类似
    
    
    
    
    '''
    必须使用闭包才能将对test1原指向保存下来
    
    def set_func(func,num):
        a = func
        print('....权限1.....')
        print('....权限2.....')
        a(num)
    
    # 等价于 test1 = set_func(test1) 
    def test1(num):
        print(".......这是test1......%d" % num)
    test1 = set_func(test1,100) 
    test1(100)
    test1(200) 
    '''
  • 相关阅读:
    nyist 541最强DE 战斗力
    nyist 231 Apple Tree
    nyist 543 遥 控 器
    nyist 233 Sort it
    nyist 517 最小公倍数
    hdu 1sting
    nyist A+B Problem IV
    nyist 522 Interval
    nyist 117 求逆序数
    nyist 600 花儿朵朵
  • 原文地址:https://www.cnblogs.com/kogmaw/p/12602555.html
Copyright © 2011-2022 走看看