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个常用函数相关推荐

  1. [转载] python数学计算模块之math常用函数学习使用

    参考链接: Python中的分数模块Fraction 因为最近经常使用到math模块中的常用函数,但是又记不住所有的函数名称,在今天结束之前花一点时间总结一下吧,很多都用过,只有几个角度计算函数不常用 ...

  2. 牛人总结python中string模块各属性以及函数的用法,果断转了,好东西

    原文链接:http://blog.chinaunix.net/uid-25992400-id-3283846.html 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产 ...

  3. python中string模块各属性以及函数的用法

    原文链接:http://blog.chinaunix.net/uid-25992400-id-3283846.html 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产 ...

  4. 【Python入门】Python之shutil模块11个常用函数详解

    shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查看等方法,还提供了对文件以及目录的路径操作.shutil模块提供了移动.复制. ...

  5. 【Python入门】Python之OS模块39个常用函数详解

    os,语义操作系统,所以该模块就是操作系统相关的功能了,用于处理文件和目录这些我们日常手动需要做的操作,比如新建文件夹.获取文件列表.删除某个文件.获取文件大小.重命名文件.获取文件修改时间等,该模块 ...

  6. python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...

    Python之shutil模块11个常用函数详解,python内置函数是什么 shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查 ...

  7. [转载] python中string函数的用法_python中string模块各属性以及函数的用法

    参考链接: Python中的string.octdigits 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符 ...

  8. Python中random模块常用函数/方法(2)——random.random(),random.randint()和random.uniform()

    1.random.random():生成一个0到1的随机符点数: 0 <= n < 1.0 语法:random.random() #生成一个0~1之间的随机浮点数 print(" ...

  9. python跨函数调用变量_对python中不同模块(函数、类、变量)的调用详解

    首先,先介绍两种引入模块的方法. 法一:将整个文件引入 import 文件名 文件名.函数名( ) / 文件名.类名 通过这个方法可以运行另外一个文件里的函数 法二:只引入某个文件中一个类/函数/变量 ...

最新文章

  1. 达观杯_构建模型(一)linearSVM
  2. AWS — AWS Local Zone
  3. Serverless应用场景
  4. Consumer group理解深入
  5. Matlab高光谱样本相关性分析
  6. php 精度运算,PHP BC 库(任意精度数字运算) | 网游世界
  7. 400 bad request的原因意思和解决方法
  8. java 编写小工具 尝试 学习(六)
  9. 已知p是一个指向类a的数据成员m的指针_C++ this指针的理解和作用
  10. K8S知道,K9S呢?
  11. Cooley-Tukey算法 (蝶形算法)
  12. Chrome 浏览器小恐龙游戏变身超级马利奥
  13. 如何使用微PE工具箱制作U盘PE
  14. 请不用条件转移指令JG,JGE,JL,JLE等指令实现如下程序片段的功能
  15. ssb的matlab仿真,线性调制AM、DSB、SSB的MATLAB仿真代码
  16. 厚积薄发 臻于至善,用友U9 cloud“王者归来”
  17. 有功,无功,视在功率的关系公式和图
  18. cocos2dx-9.键盘事件-实现精灵的连续移动
  19. Js/es for(let i in Obj)效率分析及优化
  20. 转载 冯羽的程序生涯之我见

热门文章

  1. sap.m.list render initialization process
  2. WebIDE Initialization process
  3. SAP Kyma的Lambda Function describe命令输出
  4. UI component html code 查看工具
  5. Java注解原理学习之@Cacheable debug
  6. SAML request和response的一对典型例子,供将来参考
  7. oracle求部门请假类别合计_【大话IT】求oracle sql 写法,找出同类的合计,所有的总计...
  8. 数组|leetcode59.螺旋矩阵II
  9. 将有序数组转换为二叉搜索树Python解法
  10. 下一个排列Python解法