python @修饰符_python函数修饰符@的使用方法解析
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。
创建函数修饰符的规则:
(1)修饰符是一个函数
(2)修饰符取被修饰函数为参数
(3)修饰符返回一个新函数
(4)修饰符维护被维护函数的签名
例子1:被修饰函数不带参数
def log(func):
def wrapper():
print('log开始 ...')
func()
print('log结束 ...')
return wrapper
@log
def test():
print('test ..')
test()
运行结果:
log开始 ...
test ..
log结束 ...
例子2:使用functools模块提供的修改函数属性的方法wraps
def log(func):
def wrapper():
print('log开始 ...')
func()
print('log结束 ...')
return wrapper
@log
def test1():
print('test1 ..')
def test2():
print('test2 ..')
print(test1.__name__)
print(test2.__name__)
运行结果:
wrapper
test2
可见test1的函数名称变了,如果某些代码用到就会出问题,可以使用functools模块提供的修改函数属性的方法wraps
from functools import wraps
def log(func):
@wraps(func)
def wrapper():
print('log开始 ...')
func()
print('log结束 ...')
return wrapper
@log
def test1():
print('test1 ..')
def test2():
print('test2 ..')
print(test1.__name__)
print(test2.__name__)
运行结果:
test1
test2
例子3:被修饰函数带参数
from functools import wraps
def log(func):
@wraps(func)
def wrapper(*args,**kwargs):
print('log开始 ...',func.__name__)
ret = func(*args,**kwargs)
print('log结束 ...')
return ret
return wrapper
@log
def test1(s):
print('test1 ..', s)
return s
@log
def test2(s1, s2):
print('test2 ..', s1, s2)
return s1 + s2
test1('a')
test2('a','bc')
运行结果:
log开始 ... test1
test1 .. a
log结束 ...
log开始 ... test2
test2 .. a bc
log结束 ...
例子4:修饰符带参数,需要比上面例子多一层包装
from functools import wraps
def log(arg):
def _log(func):
@wraps(func)
def wrapper(*args,**kwargs):
print('log开始 ...',func.__name__, arg)
ret = func(*args,**kwargs)
print('log结束 ...')
return ret
return wrapper
return _log
@log('module1')
def test1(s):
print('test1 ..', s)
return s
@log('module1')
def test2(s1, s2):
print('test2 ..', s1, s2)
return s1 + s2
test1('a')
test2('a','bc')
运行结果:
log开始 ... test1 module1
test1 .. a
log结束 ...
log开始 ... test2 module1
test2 .. a bc
log结束 ...
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
本文标题: python函数修饰符@的使用方法解析
本文地址: http://www.cppcns.com/jiaoben/python/271482.html
python @修饰符_python函数修饰符@的使用方法解析相关推荐
- python不定长参数怎么相加_python函数不定长参数使用方法解析
这篇文章主要介绍了python函数不定长参数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 pathon中的函数可以使用不定长参数,可以 ...
- Python编程语言学习:python语言中快速查询python自带模块函数的用法及其属性方法、如何查询某个函数关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法.如何查询某个函数&关键词的用法.输出一个类或者实例化对象的所有属性和方法名之详细攻略 ...
- python修饰符的理解_python函数修饰符@的使用方法解析
这篇文章主要介绍了python函数修饰符@的使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python函数修饰符@的作用是为现有函数增 ...
- python修饰符号的使用_Python 函数修饰符(装饰器)的使用
Python函数修饰符(装饰器)的使用 1.修饰符的来源 修饰符是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等. 修饰符是解决这类问题的绝佳设计,有了修 ...
- python修饰符作用_python函数修饰符@的使用
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志.性能测试.事务处理等等. 创建函数修饰符的规则: (1)修饰符是一个函数 (2)修饰符取被修饰函数为参数 (3)修饰符返回一个 ...
- python 属性描述符_Python属性描述符(二)
Python存取属性的方式特别不对等,通过实例读取属性时,通常返回的是实例中定义的属性,但如果实例未曾定义过该属性,就会获取类属性,而为实例的属性赋值时,通常会在实例中创建属性,而不会影响到类本身.这 ...
- python使用什么作为续行符_python的换行符是什么?
python换行符是什么? python换行符是"\n". Windows换行符是'\r\n', Unix/Linux的换行符为'\n', Mac的换行符为'\r', 在pytho ...
- python函数调用位置_python函数定义,调用,传参,位置参数及关键字参数,返回值
使用函数是真正开始编程的第一步,函数y=f(x)我们并不陌生,对x进行一顿操作得到一个值y.给不同的x,进行相同的操作,得到相应的y值. 程序层面函数是执行特定任务的一段代码,将一段代码定义成函数并为 ...
- Python教程:shift函数实现数据偏移的方法
一.背景 当需要统计不同周期的变化情况时,需要使用数据偏移,在 Python 中使用 shift 函数实现. # 一阶差分 diff_num = num - num.shift(1) 二.实现 1.创 ...
最新文章
- 用NVIDIA-TensorRT构造深度神经网络
- 综述 | 现在是蛋白质组学数据共享和再分析的黄金时间?
- 20175333曹雅坤 实验二 Java面向对象程序设计
- 一文搞定Swing和Qt按钮和文本框的创建
- pytorch 音频分类_Pytorch中音频的神经风格转换
- mysql安装数据自定义_mysql数据库自定义怎么安装
- 三维旋转矩阵_第三讲:三维空间的刚体运动
- eclipse sdk manager无法更新
- 查看centos硬件配置
- TextSnake文本检测
- EXT Column Tree 的应用
- 树分解 宽度 如何分解 算法
- 下载频道用户使用指南!!
- 智慧园区中心服务平台建议方案
- 查找python array索引
- 右键新建选项里面没有新建文件夹--win10
- 《RFID原理及应用》期末复习总结(6)
- UG NX 三维PMI标注培训
- chrome模拟手机浏览器方法
- Thingsboard 项目说明,框架目录结构、技术及部署相关说明
热门文章
- NET Core 指令启动
- SQL语句大全-珍藏首选
- window.open使用中遇到的问题
- 719. Find K-th Smallest Pair Distance
- 动态规划几种状态剪裁比较
- PAT-Mars number
- process启动jar包判断成功_恒一广告助力2020年壹基金温暖包安康发放启动仪式成功举办...
- acctype mysql assoc_DedeCMS V5.3二次开发经验分享
- linux 4.9 内核 nptl,【linuxThread和NPTL】
- zookeeper的acl权限控制_Zookeeper 权限控制 ACL介绍