位置: 编程技术 - 正文
推荐整理分享老生常谈Python进阶之装饰器(python进阶视频),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:进入python,python进阶视频,python怎么进,进入python,深入python,深入python,python经验总结,python经验总结,内容如对您有帮助,希望把文章链接给更多的朋友!
函数也是对象
要理解Python装饰器,首先要明白在Python中,函数也是一种对象,因此可以把定义函数时的函数名看作是函数对象的一个引用。既然是引用,因此可以将函数赋值给一个变量,也可以把函数作为一个参数传递或返回。同时,函数体中也可以再定义函数。
装饰器本质
可以通过编写一个纯函数的例子来还原装饰器所要做的事。
fun_test所指向的函数的引用传递给decorator()函数
decorator()函数中定义了wrap()子函数,这个子函数会调用通过func引用传递进来的fun_test()函数,并在调用函数的前后做了一些其他的事情
decorator()函数返回内部定义的wrap()函数引用
fun_test接收decorator()返回的函数引用,从而指向了一个新的函数对象
通过fun_test()调用新的函数执行wrap()函数的功能,从而完成了对fun_test()函数的前后装饰
Python中使用装饰器
在Python中可以通过@符号来方便的使用装饰器功能。
装饰的功能已经实现了,但是此时执行:
fun_test.__name__已经变成了wrap,这是应为wrap()函数已经重写了我们函数的名字和注释文档。此时可以通过functools.wraps来解决这个问题。wraps接受一个函数来进行装饰,并加入了复制函数名称、注释文档、参数列表等等功能。这可以让我们在装饰器里面访问在装饰之前的函数的属性。
更规范的写法:
带参数的装饰器
通过返回一个包裹函数的函数,可以模仿wraps装饰器,构造出一个带参数的装饰器。
装饰器类
通过编写类的方法也可以实现装饰器,并让装饰器具备继承等面向对象中更实用的特性
首先编写一个装饰器基类:
再通过继承loginfo类,扩展装饰器的功能:
以上这篇老生常谈Python进阶之装饰器就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。
浅谈Python基础之I/O模型 一、I/O模型IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的
python如何获取服务器硬件信息 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下#!/usr/bin/envpython#-*-coding:utf-8-*-importrlcompleter,readlinereadline.parse_and_bind
详解Python读取配置文件模块ConfigParser 1,ConfigParser模块简介假设有如下配置文件,需要在Pyhton程序中读取$catconfig.ini[db]db_port=db_user=rootdb_host=.0.0.1db_pass=xgmtest[SectionOne]Status:SingleName:DerekVal
标签: python进阶视频
本文链接地址:https://www.jiuchutong.com/biancheng/375651.html 转载请保留说明!友情链接: 武汉网站建设