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

 更新时间:2024年05月30日 10:16:34   作者: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 装饰器 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python绘制指数分布的概率密度函数图

    Python绘制指数分布的概率密度函数图

    在数据科学和统计学中,指数分布是一种应用广泛的连续概率分布,通常用于建模独立随机事件发生的时间间隔,本文将展示如何在Python中绘制指数分布的概率密度函数图,需要的可以了解下
    2024-12-12
  • 用yum安装MySQLdb模块的步骤方法

    用yum安装MySQLdb模块的步骤方法

    在python2.7版本中,MySQLdb模块还不是python的内置模块,但是MySQLdb模块又是Python与MySQL连接的桥梁,对于作为MySQL DBA又很喜欢Python语言的我来说,MySQLdb真的是必需品呢。所以就需要自己进行安装了,这篇文章就给大家详细介绍了关于用yum安装MySQLdb模块的步骤。
    2016-12-12
  • Python collections中的双向队列deque简单介绍详解

    Python collections中的双向队列deque简单介绍详解

    这篇文章主要介绍了Python collections中的双向队列deque简单介绍详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Python实现GUI学生管理系统的示例代码

    Python实现GUI学生管理系统的示例代码

    这篇文章主要为大家介绍了如何留Python语言实现简易的GUI学生管理系统,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以参考下
    2022-06-06
  • 基于Tensorflow搭建一个神经网络的实现

    基于Tensorflow搭建一个神经网络的实现

    神经网络可能会让人感到恐惧,特别是对于新手机器学习的人来说。这篇文章主要介绍了基于Tensorflow搭建一个神经网络的实现,从入门开始,感兴趣的可以了解一下
    2021-05-05
  • Python松散正则表达式用法分析

    Python松散正则表达式用法分析

    这篇文章主要介绍了Python松散正则表达式用法,较为详细的分析了松散正则表达式的概念、功能与相关使用技巧,需要的朋友可以参考下
    2016-04-04
  • 简单了解Java Netty Reactor三种线程模型

    简单了解Java Netty Reactor三种线程模型

    这篇文章主要介绍了简单了解Java Netty Reactor三种线程模型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 图邻接矩阵可视化解析

    图邻接矩阵可视化解析

    这篇文章主要介绍了基于图邻接矩阵可视化解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 使用Python创建一个扑克牌生成器

    使用Python创建一个扑克牌生成器

    扑克牌是一种广泛使用的娱乐工具,通常用于各种纸牌游戏,本文给大家介绍了如何使用Python创建一个扑克牌生成器,需要的朋友可以参考下
    2025-04-04
  • 使用Python创建简单的HTTP服务器的方法步骤

    使用Python创建简单的HTTP服务器的方法步骤

    这篇文章主要介绍了使用Python创建简单的HTTP服务器的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04

最新评论