1 functools函数

functools模块用于高阶函数:作用与或者返回其它函数的函数。一般来说,对于该模块,任何可调用对象都可以视为一个函数。

functools模块定义了以下函数:

1.1 functools.cmp_to_key(func)

版本3.2中新增。

将旧风格的比较函数转换为key函数。用于接收key函数的工具(例如sorted()min()max()heapq.nlargest()heapq.nsmallest()itertools.groupby())。该函数主要用作支持比较函数的Python 2转换工具。

比较函数可以是任何可调用的对象,接收两个参数,比较它们,如果小于返回负数,相等返回0,大于返回正数。key函数是一个可调用对象,接收一个参数,并返回另一个值用于排序的键。

示例:

sorted(iterable, key=cmp_to_key(locale.strcoll)) # locale-aware sort order

1.2 @functools.lru_cache(maxsize=128, typed=False)

版本3.2中新增。
版本3.3中修改:增加可选参数typed参数。

装饰器用一个有记忆的调用包装一个函数,它可以保存最近maxsize次调用。当使用同样的参数定期调用费时或I/O绑定的函数时,它可以节省时间。

因为使用字典缓存结果,所以函数的位置和关键字参数必须是hashable

如果maxsize设置为None,则禁用LRU功能,并且缓存可以无限增长。当maxsize设置为$ 2^n $时,性能最佳。

如果typed设置为真,则不同类型的函数参数会分别缓存。例如,f(3)f(3.0)将视为不同结果的不同调用。

为了帮助测量缓存的有效性并调整maxsize参数,包装函数使用cache_info()函数返回一个命名元组,包括hitsmissesmaxsizecurrsize。在多线程环境中,hitsmisses是近似值。

装饰器还提供了cache_clear()函数用于清除缓存,或者让缓存失效。

原始的底层函数通过wrapped属性访问。这对于内省,绕过缓存,或者重新装饰函数很有用。

当最近调用是即将调用的最佳调用因子时(例如,新闻服务器上的最受欢迎文章常常每天改变),LRU(least recently used)缓存效果最好。缓存的大小限制确保缓存不会在长时间运行的进程(如web服务器)上不受限制的增长。

用于静态Web内容的LRU缓存示例:

@lru_cache(maxsize=32)
def get_pep(num):'Retrieve text of a Python Enhancement Proposal'resource = 'http://www.python.org/dev/peps/pep-%04d/' % numtry:with urllib.request.urlopen(resource) as s:return s.read()except urllib.error.HTTPError:return 'Not Found'


http://www.taodudu.cc/news/show-1486451.html

相关文章:

  • 12.5 防止死锁的加锁机制
  • Python线程同步机制
  • Queue - 一种线程安全的FIFO实现
  • 软件_linux命令cp目录路径和通配符
  • python进阶10并发之六并行化改造
  • python进阶11并发之七多种并发方式的效率测试
  • 通俗易懂:说说 Python 里的线程安全、原子操作
  • [转]python进阶到高阶大全
  • python进阶12并发之八多线程与数据同步
  • python进阶13并发之九多进程和数据共享
  • [转]在python中删除list中元素的3种方法:remove、pop、del
  • [转]简明 Nginx Location Url 配置笔记
  • python进阶14文件路径(找不到文件)
  • python进阶15变量作用域LEGB
  • python进阶16多继承与Mixin
  • python进阶17炫技巧
  • python进阶18正则表达式
  • Django 的第三方包
  • 看完本文若不能让你学通“Python”,我将永远退出IT界
  • [转]Python中下划线---完全解读
  • [转]35个高级Python知识点总结
  • [转]新来的大神用策略模式把if else给优化了,技术总监说:能不能想好了再改?...
  • python进阶19垃圾回收GC
  • python进阶20装饰器
  • python进阶21之actor
  • [转]Django 好用的第三方包
  • 软件_搭建rtsp视频推送环境
  • Python知识点汇总
  • django进阶02websocket
  • django进阶03静态文件和模板

functools模块相关推荐

  1. python functools模块(主要是为函数式编程而设计,用于增强函数功能,主要为可调用对象(callable objects)定义高阶函数或操作)

    参考文章1:Python的functools模块 参考文章2:尝试修改LabelImg,将以对顶角画框改成以对角线相交点画框

  2. python中的functools模块

    functools模块可以作用于所有的可以被调用的对象,包括函数 定义了__call__方法的类等 1 functools.cmp_to_key(func) 将比较函数(接受两个参数,通过比较两个参数 ...

  3. Python中functools模块函数解析

    Python自带的 functools 模块提供了一些常用的高阶函数,也就是用于处理其它函数的特殊函数.换言之,就是能使用该模块对可调用对象进行处理. functools模块函数概览 functool ...

  4. python 之 functools模块

    functools模块用于高阶函数:作用于或返回其他函数的函数.一般而言,任何可调用对象都可以作为本模块用途的函数来处理. 官方文档已经有了详尽的介绍,这里就不在复述,详情请见:官方文档 .这里主要介 ...

  5. python中functools的partiaethod_Python中functools模块函数解析

    Python自带的 functools 模块提供了一些常用的高阶函数,也就是用于处理其它函数的特殊函数.换言之,就是能使用该模块对可调用对象进行处理. functools模块函数概览 functool ...

  6. Python标准库笔记(9) — functools模块

    functools 作用于函数的函数 functools 模块提供用于调整或扩展函数和其他可调用对象的工具,而无需完全重写它们. 装饰器 partial 类是 functools 模块提供的主要工具, ...

  7. python装饰器及functools模块

    python装饰器及functools模块 本文是笔者学习python装饰器以及functools模块的笔记. 在开始学习之前,先在此列举出python函数的一些特性: 一切皆对象:python函数也 ...

  8. functools模块之update_wrapper、wraps功能

    介绍: functools 模块主要是为函数式编程设计的,用于增强函数功能.为函数服务的工具. update_wrapper 用以更新包装函数 为什么要更新包装函数?–>保存被包装函数的属性 @ ...

  9. Python 标准库 functools 模块详解

    functools 官方文档:https://docs.python.org/zh-cn/3/library/functools.html Python 标准模块 --- functools:http ...

最新文章

  1. 你可以把编程当做一项托付终身的职业
  2. 携程python_Python 携程
  3. SAP_SD常用增强
  4. 【bzoj3524】【Poi2014】【Couriers】可持久化线段树(主席树)水题
  5. org.hibernate.TypeMismatchException: Provided id of the wrong type for class *** Expected ***
  6. unix网络编程 ubuntu下搭建环境编译源码
  7. 使用Spring 3引导Web应用程序
  8. 钉钉老版本下载3.31_钉钉旧版pc下载-钉钉旧版pc客户端下载-西西软件下载
  9. Ivanti罗琦:IT服务管理中“拧紧螺丝”要有门道儿!
  10. android代码删除sd卡文件在哪里,android - 如何从SD卡中删除文件?
  11. client中周期性边界_FLUENT创建周期性边界条件方法
  12. Java 数据类型和 MySql 数据类型对应一览表
  13. linux跑程序占用缓存过多释放内存echo 3 > /proc/sys/vm/drop_caches
  14. idea 自动导包_idea万能快捷键,你不知道的17个实用技巧!!!
  15. js获取后端传过来的数据
  16. 数学建模案例【人口模型 】(马尔萨斯人口模型,Logistic模型)
  17. 遍历获取文件夹下的所有文件
  18. 微信公众号平台js逆向分析
  19. 关于下载的wide形式的数据(横轴为地区,纵轴为年份)批量转换为long形式的代码(stata版)
  20. 脱壳基础篇——常用六操作

热门文章

  1. 系统大小端的头文件定义
  2. SpringSecurity入门
  3. 计算机应用0006作业2,〔计算机应用基本0006〕14秋在线作业2.doc
  4. 组织架构递归_映射架构和递归管理数据–第1部分
  5. 转储sql文件_在Linux上SQL Server中更改SQL转储文件位置
  6. 一:MyBatis知识整理(1)
  7. weblogic中删除自动部署项目
  8. 一直当菜鸟吧!——关于全局变量
  9. 2019-02-25 SQL:cast(itemvalue as decimal(19,4))
  10. 多个if和一个ifelse的区别