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) 
    '''
  • 相关阅读:
    数组的学习(一)
    Servlet是线程安全吗?
    MySql用户管理:添加用户、授权、删除用户
    泛型(二)
    泛型(一)
    Spring MVC
    spring框架
    mybatis基础
    Hibernate 基础
    Java局部类
  • 原文地址:https://www.cnblogs.com/kogmaw/p/12602555.html
Copyright © 2011-2022 走看看