zoukankan      html  css  js  c++  java
  • 06-python中的装饰器

    java类中, 有一系列的装饰器, 尤其对文件的操作, python的装饰器比较简单, 直接上代码

    #!/usr/bin/env python3
    #coding:utf-8
    '''
    python的装饰器
    
    包装原函数, 添加   @+装饰器函数名   注解
    
    实质是把 Fun1 重新赋值为 wrapper
    
    函数只有名代表这个函数, 带括号相当于执行这个函数
    
    '''
    
    # 装饰器
    def outer(fun):
        def wrapper(arg):
            print('outerrerere')
            result = fun(arg)
            print('enddddd...')
            return result
    
        return wrapper
    
    
    @outer
    # @outer = outer(Fun1)
    def Fun1(arg):
        print('func1', arg)
        return arg
    
    @outer
    def Fun2(arg):
        print('func2', arg)
        return arg
    
    
    rrr = Fun1('alex')
    print(rrr,'123')
    Fun2('alex')

    然后, 可能会有带有参数的

    #!/usr/bin/env python3
    #coding:utf-8
    '''
    带参数的装饰器, 传入函数的
    
    '''
    
    def Fileter(before_func, after_func):
        def outer(main_func):
            def wrapper(request, args):
                before_result = before_func(request, args)
                if (before_result != None):
                    return before_result
    
                main_result = main_func(request, args)
                if (main_result != None):
                    return main_result
    
                after_result = after_func(request, args)
                if (after_result != None):
                    return after_func
    
            return wrapper
        return outer
    
    
    @Filter(AccountFilter.Before, AccountFilter.Afeter)
    def List(request, args):
        pass
  • 相关阅读:
    模块之datetime
    模块之time模块
    模块之相对路径导入
    模块之包跨模块导入
    模块
    迭代器
    leetcode234 回文链表(Easy,不简单)
    leetcode543 二叉树的直径(Easy 不简单)
    leetcode538 把二叉树转换为累加树(Easy,不简单)
    leetcode136 只出现一次的数字(Easy)
  • 原文地址:https://www.cnblogs.com/wenbronk/p/7142557.html
Copyright © 2011-2022 走看看