python之带有参数的装饰器

Posted 牛公的跑奔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之带有参数的装饰器相关的知识,希望对你有一定的参考价值。

一个小demo

def set_level(level_num):
    def set_func(func):
        def call_func(*args, **kwargs):
            if level_num == 1:
                print("----权限级别1,验证----")
            elif level_num == 2:
                print("----权限级别2,验证----")
            return func()
        return call_func
    return set_func

# 带有参数的装饰器装饰过程分为2步:
# 1. 调用set_level函数,把1当做实参
# 2. set_level返回一个装饰器的引用,即set_func
# 3. 用返回的set_func对test1函数进行装饰(装饰过程与之前一样)
@set_level(1)
def test1():
    print("-----test1---")
    return "ok"

@set_level(2)
def test2():
    print("-----test2---")
    return "ok"


test1()
test2()

 

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

Python进阶装饰器(Decorator)

Python 之 进阶学习

Python之通用装饰器的使用

python 通用装饰器,带有参数的装饰器,

基于 Python 类的装饰器,带有可以装饰方法或函数的参数

[python] 之 装饰器