python 装饰器带参数和不带参数步骤详解
作者:Yorlen_Zhang
装饰器是Python语言中一种特殊的语法,用于在不修改原函数代码的情况下,为函数添加额外的功能或修改函数的行为,这篇文章主要介绍了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 装饰器 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!