iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 装饰器详解与应用范例
  • 437
分享到

python 装饰器详解与应用范例

2024-04-02 19:04:59 437人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

什么是装饰器 从字面意思上来看,装饰器是用来装饰其他东西的工具。在python中装饰器分为函数装饰器和类装饰器。 简而言之,函数装饰器是用来装饰函数的装饰器,其主要目的是增加目标函数

什么是装饰器

从字面意思上来看,装饰器是用来装饰其他东西的工具。在python中装饰器分为函数装饰器和类装饰器。
简而言之,函数装饰器是用来装饰函数的装饰器,其主要目的是增加目标函数的功能,类装饰器也就是装饰类的装饰器,增加类的功能。

函数装饰器

装饰器本质是嵌套函数
下面是一个简单的装饰器


# fun1为装饰器名称,function指的是被装饰的函数
def fun1(function):
	def fun2():
		print("开始了!")
		function() # 执行被装饰的函数或者 或者 return function()
	return fun2

外面的fun1()需要传入一个参数,这个参数是用来传入要被装饰的函数,里面的fun2()需要执行function这个参数。
这是将函数当成参数传入另一个函数。

使用方法:
在需要装饰的函数上添加@装饰器名称


@fun1
def fun3():
	print("aaa")

fun3()

可以等价成这样:


def fun3():
	print("aaa")
fun = fun1(fun3)
fun()

输出结果是一致的

执行结果:

开始了!
aaa

如果传入的函数需要参数可以这样写:


def fun1(function):
	def fun2(a):
		print("开始了!")
		function(a) 
	return fun2

@fun1
def fun3(a):
	print(a)
fun3("aaa")

输出结果:

开始了!
aaa

如果不清楚传入的函数需要多少个参数,可以这样写:


def fun1(function):
	def fun2(*args, **kwargs):
		print("开始了!")
		function(*args, **kwargs) 
	return fun2

@fun1
def fun3(a,b):
	print(a,b)

@fun1	
def fun4(a,b,c):
    print(a,b,c)
    
fun3("aaa","bbb")
fun4("ccc","DDD","eee")

运行结果:

开始了!
aaa bbb
开始了!
ccc ddd eee

如果函数装饰器需要添加参数,可以这样写:


def fun(msg):
	def fun1(function):
		def fun2(*args, **kwargs):
			print("开始了!{}".fORMat(msg))
			function(*args, **kwargs) 
		return fun2
	return fun1

@fun(msg="小朋友")
def fun3(a,b):
	print(a,b)

fun3("aaa","bbb")

运行结果:

开始了!小朋友
aaa bbb

类装饰器

类装饰器的用法基本和函数装饰器一样,只不过是用类写的装饰器


class fun1(object):
    def __init__(self, func):
        self.func = func

    def __call__(self, *args, **kwargs):
        print(("开始了!")
        self.func(*args, **kwargs)

@fun1
def fun2(a,b):
	print(a,b)

fun2("aaa","bbb")

类装饰用到了类的__call__方法

运行结果:

开始了!
aaa bbb

还可以这样写:


class fun(object):
    def __init__(self, msg):
        self.msg = msg
        

    def __call__(self, func):
        def fun1(*args, **kwargs):
            print("开始了!{0}".format(self.msg))
            func(*args, **kwargs)
        return fun1

@fun(msg="小朋友")
def fun2(a, b):
    print(a, b)

fun2("aaa,","bbb")

运行结果:

开始了!小朋友
aaa, bbb

到此这篇关于Python 装饰器详解与应用范例的文章就介绍到这了,更多相关python 装饰器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python 装饰器详解与应用范例

本文链接: https://www.lsjlt.com/news/156789.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 装饰器详解与应用范例
    什么是装饰器 从字面意思上来看,装饰器是用来装饰其他东西的工具。在python中装饰器分为函数装饰器和类装饰器。 简而言之,函数装饰器是用来装饰函数的装饰器,其主要目的是增加目标函数...
    99+
    2024-04-02
  • Python 中闭包与装饰器案例详解
    目录1.Python中一切皆对象2.函数式第一类对象3.函数对象 vs 函数调用4.闭包&LEGB法则5.装饰器&语法糖(syntax sugar)6. 回归问题项目...
    99+
    2024-04-02
  • python 函数的详解与应用范例
    目录如何定义一个函数如何使用什么是参数不定长参数return是干什么如何定义一个函数 函数也称方法,下面写一个简单的函数: def function(): print("我是函...
    99+
    2024-04-02
  • Python学习之装饰器与类的装饰器详解
    目录装饰器装饰器的定义装饰器的用法类中的装饰器类的装饰器 - classmethod类的装饰器 - staticmethod类的装饰器 - property通过学习装饰器可以让我们更...
    99+
    2024-04-02
  • python装饰器详解
            python中的装饰器(decorator)一般采用语法糖的形式,是一种语法格式。比如:@classmethod,@staticmethod,@property,@xxx.setter,@wraps(),@func_na...
    99+
    2023-09-01
    python
  • python装饰器1:函数装饰器详解
    装饰器1:函数装饰器 装饰器2:类装饰器 装饰器3:进阶 先混个眼熟 谁可以作为装饰器(可以将谁编写成装饰器): 函数 方法 实现了__call__的可调用类 装饰器可以去装饰谁(谁可以被装饰): 函数 方法 类 基础...
    99+
    2023-01-30
    详解 函数 python
  • Python pytest装饰器总结(实例详解)
    几个常用装饰器 pytest.ini 配置文件 例子: [pytest] addopts = -v -s --html=py_test/scripts/report/report...
    99+
    2024-04-02
  • python 装饰器案例解析
    本文介绍几个装饰器案例,来分析装饰器是如何调用的获取函数运行时间的例子写装饰器,不可以一步到位,要慢慢一点一点的来先写好2个函数import time def test1():    &nb...
    99+
    2023-01-30
    案例 python
  • Python Pytest装饰器@pytest.mark.parametrize详解
    Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT 如:@pytest.mark.parametrize(...
    99+
    2024-04-02
  • Python装饰器中@property使用详解
    目录最初的声明方式使用装饰器的声明方式使用装饰器的调用过程总结最初的声明方式 在没有@property修饰的情况下,需要分别声明get、set、delete函数,然后初始化prope...
    99+
    2024-04-02
  • Python 3 之 装饰器详解
    ------------ 装饰器 -----------------------------------------------------什么是装饰器装饰器是为函数和类指定管理代码的一种方式。装饰器本身的形式是处理其他的可调用对象的可调用...
    99+
    2023-01-31
    详解 Python
  • Python装饰器代码详解
    目录一、理解装饰器二、装饰器原型1、不带参数的装饰器2.带参数的被装饰的函数3.带参数的装饰器4.使用类作为装饰器5.使用对象作为装饰器6.多层装饰器的嵌套总结一、理解装饰器 所有东...
    99+
    2024-04-02
  • Python 函数装饰器详解
    目录使用场景授权(Authorization)日志(Logging)带参数的装饰器在函数中嵌入装饰器装饰器类总结装饰器(Decorators)是 Python 的一个重要部分。简单地...
    99+
    2024-04-02
  • 怎么应用python装饰器
    本篇内容主要讲解“怎么应用python装饰器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么应用python装饰器”吧!什么是装饰器从字面意思上来看,装饰器是用来装饰其他东西的工具。在pyth...
    99+
    2023-06-25
  • Python装饰器详情
    目录1、装饰器1.1 应用场景2、万能装饰器3、多层装饰器4、带参数的装饰器1、装饰器 装饰器(Decorator):从字面上理解,就是装饰对象的器件。可以在不修改原有代码的情况下,...
    99+
    2024-04-02
  • python中的迭代器,生成器与装饰器详解
    目录迭代器生成器装饰器总结迭代器 每一个可迭代类内部都要实现__iter__()方法,返回一个迭代类对象,迭代类对象则定义了这个可迭代类如何迭代。 for循环调用list本质上是是调...
    99+
    2024-04-02
  • Python装饰器的应用场景及实例用法
    1、说明 装饰本质上是一个Python函数,它能使其他函数在没有任何代码变化的情况下增加额外的功能。有了装饰,我们可以抽出大量与函数功能无关的相同代码,继续重用。 2、应用场景 包括...
    99+
    2024-04-02
  • Python装饰器-闭包与函数装饰器
    一、闭包在学习装饰器前,需要先了解闭包的概念。形成闭包的要点:函数嵌套将内部函数作为外部函数的返回值内部函数必须要使用到外部函数的变量下面以一个计算列表平均值的案例来讲解闭包:def make_average(): # 创建一个列表,用来保...
    99+
    2023-05-14
    Python 函数 装饰器
  • Python函数装饰器的使用详解
    目录装饰器装饰器的定义装饰器的意义装饰器的使用无参装饰器有参装饰器实例练习总结装饰器 装饰器的定义 关于装饰器的定义,我们先来看一段github上大佬的定义: Function de...
    99+
    2024-04-02
  • python基础之装饰器详解
    目录一、前言二、高阶函数三、函数嵌套四、装饰器4.1 被装饰方法带返回值4.2 被装饰方法带参数4.3 验证功能装饰器4.4 验证功能装饰器——带参数一、前言 装...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作