06-python中的装饰器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于06-python中的装饰器的主要内容,如果未能解决你的问题,请参考以下文章

类中的装饰器在Pycharm中抛出警告

Python面向对象学习之八,装饰器

装饰器 以及 django 中的应用

代码缺乏装饰?使用ts装饰器来装饰你的代码

代码缺乏装饰?使用ts装饰器来装饰你的代码

代码缺乏装饰?使用ts装饰器来装饰你的代码