python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python 装饰器带参数

python 装饰器带参数和不带参数步骤详解

作者:Yorlen_Zhang

装饰器是Python语言中一种特殊的语法,用于在不修改原函数代码的情况下,为函数添加额外的功能或修改函数的行为,这篇文章主要介绍了python装饰器带参数和不带参数的相关知识,需要的朋友可以参考下

装饰器是Python语言中一种特殊的语法,用于在不修改原函数代码的情况下,为函数添加额外的功能或修改函数的行为。通过装饰器,我们可以在函数执行前后执行一些额外的代码,或者修改函数的参数。

要使用装饰器引入函数和参数,可以按照以下步骤进行:

全局定义参数传参

def decorator_function(names):
    def inner_wrapper(func):
        def wrapper():
            result = func()
            return result + f"""my class student's name is {"、".join(names)};"""
        return wrapper
    return inner_wrapper
names = ["Mike", "David", "Jhon"]
@decorator_function(names)
def generate_code():
    return f" I'm a teacher! "
result_str = generate_code()
print(result_str)

不带参数,这里的names为全局参数

def subnormal_saturation_decorator(func):
    def wrapper(*args, **kwargs):
        result = func(*args, **kwargs)
        return result + f"""my class student's name is {"、".join(names)};"""
    return wrapper
names = ["Mike", "David", "Jhon"]
@subnormal_saturation_decorator
def generate_code():
    return f" I'm a teacher!"
result_str = generate_code()
print(result_str)

通过方法传参

def subnormal_saturation_decorator(func):
    def wrapper(names,*args, **kwargs):
        result = func(names,*args, **kwargs)
        return result + f"""my class student's name is {"、".join(names)};"""
    return wrapper
@subnormal_saturation_decorator
def generate_code(names):
    print(names)
    return f" I'm a teacher!"
result_str = generate_code(["Mike", "David", "Jhon"])
print(result_str)

调用使用装饰器的方法,带传参 

# 装饰器
def subnormal_saturation_decorator(func):
    def wrapper(names,*args, **kwargs):
        result = func(names,*args, **kwargs)
        return result + f"""my class student's name is {"、".join(names)};"""
    return wrapper
# 使用装饰器的方法
@subnormal_saturation_decorator
def generate_code(names):
    print(names)
    return f" I'm a teacher!"
# 调用使用装饰器方法的方法
def supper_func():
    names = ["Mike", "David", "Jhon"]
    return generate_code(names)
result_str = supper_func()
print(result_str)

到此这篇关于python 装饰器 带参数和不带参数的文章就介绍到这了,更多相关python 装饰器 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文