python中functools_functools模块2个常用函数
functools是python2.5被引人的,一些工具函数放在此包里,python3中增加了更多工具函数,业务开发时大多情况下用不到,此处介绍使用频率较高的2个函数。
partial函数(偏函数)
这个函数在基础教程篇介绍过,可查看偏函数,partial函数可以把一个函数的某些参数预先设置默认值,返回一个新的函数,调用这个新函数会更简单。
# -*- coding: utf-8 -*-
import functools
def showarg(*args, **kw):
print(args)
print(kw)
p1=functools.partial(showarg, 1,2,3)
p1()
p1(4,5,6)
p1(a='python', b='dong')
p2=functools.partial(showarg, a=3,b='linux')
p2()
p2(1,2)
p2(a='python', b='dong')
D:python3installpython.exe D:/python/py3script/python66_2.py
(1, 2, 3)
{}
(1, 2, 3, 4, 5, 6)
{}
(1, 2, 3)
{'a': 'python', 'b': 'dong'}
()
{'a': 3, 'b': 'linux'}
(1, 2)
{'a': 3, 'b': 'linux'}
()
{'a': 'python', 'b': 'dong'}
Process finished with exit code 0
wraps函数
使用装饰器时,有一些细节需要被注意。例如,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变)。添加后对测试结果有一些影响,例如:
# -*- coding: utf-8 -*-
def note(func):
"note function"
def wrapper():
"wrapper function"
print('note something')
return func()
return wrapper
@note
def test():
"test function"
print('I am test')
test()
print(test.__doc__)
D:python3installpython.exe D:/python/py3script/python66_2.py
note something
I am test
wrapper function
Process finished with exit code 0
所以,Python的functools包中提供了一个叫wraps的装饰器来消除这样的副作用。例如:
# -*- coding: utf-8 -*-
import functools
def note(func):
"note function"
@functools.wraps(func)
def wrapper():
"wrapper function"
print('note something')
return func()
return wrapper
@note
def test():
"test function"
print('I am test')
test()
print(test.__doc__)
D:python3installpython.exe D:/python/py3script/python66_2.py
note something
I am test
test function
Process finished with exit code 0
python中functools_functools模块2个常用函数相关推荐
- [转载] python数学计算模块之math常用函数学习使用
参考链接: Python中的分数模块Fraction 因为最近经常使用到math模块中的常用函数,但是又记不住所有的函数名称,在今天结束之前花一点时间总结一下吧,很多都用过,只有几个角度计算函数不常用 ...
- 牛人总结python中string模块各属性以及函数的用法,果断转了,好东西
原文链接:http://blog.chinaunix.net/uid-25992400-id-3283846.html 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产 ...
- python中string模块各属性以及函数的用法
原文链接:http://blog.chinaunix.net/uid-25992400-id-3283846.html 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产 ...
- 【Python入门】Python之shutil模块11个常用函数详解
shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查看等方法,还提供了对文件以及目录的路径操作.shutil模块提供了移动.复制. ...
- 【Python入门】Python之OS模块39个常用函数详解
os,语义操作系统,所以该模块就是操作系统相关的功能了,用于处理文件和目录这些我们日常手动需要做的操作,比如新建文件夹.获取文件列表.删除某个文件.获取文件大小.重命名文件.获取文件修改时间等,该模块 ...
- python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...
Python之shutil模块11个常用函数详解,python内置函数是什么 shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查 ...
- [转载] python中string函数的用法_python中string模块各属性以及函数的用法
参考链接: Python中的string.octdigits 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符 ...
- Python中random模块常用函数/方法(2)——random.random(),random.randint()和random.uniform()
1.random.random():生成一个0到1的随机符点数: 0 <= n < 1.0 语法:random.random() #生成一个0~1之间的随机浮点数 print(" ...
- python跨函数调用变量_对python中不同模块(函数、类、变量)的调用详解
首先,先介绍两种引入模块的方法. 法一:将整个文件引入 import 文件名 文件名.函数名( ) / 文件名.类名 通过这个方法可以运行另外一个文件里的函数 法二:只引入某个文件中一个类/函数/变量 ...
最新文章
- 达观杯_构建模型(一)linearSVM
- AWS — AWS Local Zone
- Serverless应用场景
- Consumer group理解深入
- Matlab高光谱样本相关性分析
- php 精度运算,PHP BC 库(任意精度数字运算) | 网游世界
- 400 bad request的原因意思和解决方法
- java 编写小工具 尝试 学习(六)
- 已知p是一个指向类a的数据成员m的指针_C++ this指针的理解和作用
- K8S知道,K9S呢?
- Cooley-Tukey算法 (蝶形算法)
- Chrome 浏览器小恐龙游戏变身超级马利奥
- 如何使用微PE工具箱制作U盘PE
- 请不用条件转移指令JG,JGE,JL,JLE等指令实现如下程序片段的功能
- ssb的matlab仿真,线性调制AM、DSB、SSB的MATLAB仿真代码
- 厚积薄发 臻于至善,用友U9 cloud“王者归来”
- 有功,无功,视在功率的关系公式和图
- cocos2dx-9.键盘事件-实现精灵的连续移动
- Js/es for(let i in Obj)效率分析及优化
- 转载 冯羽的程序生涯之我见
热门文章
- sap.m.list render initialization process
- WebIDE Initialization process
- SAP Kyma的Lambda Function describe命令输出
- UI component html code 查看工具
- Java注解原理学习之@Cacheable debug
- SAML request和response的一对典型例子,供将来参考
- oracle求部门请假类别合计_【大话IT】求oracle sql 写法,找出同类的合计,所有的总计...
- 数组|leetcode59.螺旋矩阵II
- 将有序数组转换为二叉搜索树Python解法
- 下一个排列Python解法