Python模块之functools
前言
这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题
于是乎,我自己开发了一款面试宝典,希望能帮到大家,也希望有更多的Python新人真正加入从事到这个行业里,让python火不只是停留在广告上。
微信小程序搜索:Python面试宝典
或可关注原创个人博客:https://lienze.tech
也可关注微信公众号,不定时发送各类有趣猎奇的技术文章:Python编程学习
functools模块
作用于或返回其他函数的函数,一般来说,任何可调用对象都可以作为这个模块的用途来处理
lru_cache
functools.lru_cache(maxsize=128, typed=False)
functools.lru_cache的作用主要是用来做缓存,他能把相对耗时的函数结果进行保存,避免传入相同的参数重复计算
同时,缓存并不会无限增长,不用的缓存会被释放
Least Recently Used
maxsize: 代表缓存的内存占用值,超过这个值之后,就的结果就会被释放,然后将新的计算结果进行缓存,其值应当设为2的幂
typed: 若为True,则会把不同的参数类型得到的结果分开保存
被 lru_cache
装饰的函数会有 cache_clear
和 cache_info
两个方法,分别用于清除缓存和查看缓存信息
from functools import lru_cache@lru_cache(None)
def add(x, y):print("运算结果: %s + %s = " % (x, y),end="")return x + yprint(add(1, 2))
print(add(1, 2))
print(add(2, 3))
partial
functools.partial(func, *args, **keywords)
partial也称作偏函数,可以将某个函数的参数从左向右依次给予默认值,并返回一个新的函数对象
class partial(builtins.object)partial(func, *args, **keywords) - new function with partial applicationof the given arguments and keywords.
from functools import partial
def func(x,y):print('x:',x)print('y:',y)return x + y
new_ = partial(func,1,2)
new_()
-------效果-------
x: 1
y: 2
3
可以简化函数调用过程,将固定参数直接通过partial方法进行绑定
reduce
reduce(function, sequence[, initial]) -> value
进行累计运算
reduce(lambda x,y : x + y, range(5))
wraps
functools.wraps旨在消除装饰器对原函数造成的影响,即对原函数的相关属性进行拷贝,已达到装饰器不修改原函数的目的
- 传统的装饰器装饰结束之后会导致被装饰函数属性发生改变
import functools
def decorator(f):@functools.wraps(f)def wapper(*args,**kwargs):return f(*args,**kwargs)return wapper@decorator
def f(a,b):return a + b
f.__name__
- 结果
'wapper'
可以通过wraps进行这样影响的消除
import functools
def decorator(f):@functools.wraps(f) # 消除被装饰函数f的属性影响def wapper(*args,**kwargs):return f(*args,**kwargs)return wapper@decorator
def f(a,b):return a + b
f.__name__
# f
Python模块之functools相关推荐
- python中functools_python functools模块
functools模块是Python标准模块 1. 模块简介 functools: 用于高阶函数, 指那些作用域函数或者返回其它函数的函数, 通常只要是可以被当做函数调用的对象就是这个模块的目标. 2 ...
- python 模块 导入机制 模块搜索 Python包 发布python模块或程序
python 模块 python模块:以.py结尾的代码文件. 顶层文件: 程序执行入口 模块文件1 模块文件2 模块文件3 在python中一 ...
- Python3,我用这种方式讲解python模块,80岁的奶奶都说能理解。建议收藏 ~ ~
Python模块讲解 1.引言 2.python模块详解 2.1 含义 2.2 代码示例 2.3 进阶 3.总结 1.引言 小屌丝:鱼哥,你看天上的月亮越来越圆了. 小鱼:唉~ 又是一年团圆夜,又是一 ...
- Python模块(自己整理并不完整)
PY核心模块方法 ******************** os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename() 重命名文件 os.listdi ...
- python functools partial_浅谈python标准库--functools.partial
一.简单介绍: functools模块用于高阶函数:作用于或返回其他函数的函数.一般而言,任何可调用对象都可以作为本模块用途的函数来处理. functools.partial返回的是一个可调用的par ...
- GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态
GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态 一个Python模块,用于在Python中使用nvidia-smi以编程方式从NVIDA GPU获取GP ...
- 在Ubuntu 14.04.5 LTS上安装python模块selenium 3实录
简介 Selenium是python模块库中一组web自动化测试工具集,提供多种语言的API,例如java,python,ruby,.net等,支持Firefox,Chrome,IE,Safari 等 ...
- Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8
我使用python的MySQLdb模块实现了一个mysql client, 在测试时,出现了如下错误 Python模块MySQLdb操作mysql出现2019错误:Can't initialize c ...
- Python培训教程分享:Python模块如何导入__all__属性?
本期小编为大家带来的Python培训教程是关于"Python模块如何导入__all__属性?"的内容,后面在工作中是会遇到Python模块这个工作内容的,Python模块的开头通常 ...
- 分享3个好用到爆的 Python 模块,点赞收藏
作者 | 俊欣 来源 | 关于数据分析与可视化 今天给大家介绍3个特别好用的Python模块,知道的人可能不多,但是特别的好用. Psutil Pendulum Pyfiglet Psutil Pyt ...
最新文章
- python3操作mysql教程_python3操作mysql教程
- Android-room的学习
- Struts+Hibernate+MyEclipse+Tomcat+MySQL的乱码之解决
- SAP PM 初级系列13 - PM Revision
- Spring 4.2.2以上版本和swagger集成方案和踩过的坑
- Mysql 百万级数据优化资料
- [深度学习] Normalization 模型
- vue路由传参的三种基本方式 - 流年的樱花逝 - SegmentFault 思否
- 完全卸载mysql数据库图文教程
- 码云上传代码添加标签_第一次使用Git Bash Here 将本地代码上传到码云
- python的抽象类详解_第7.19节 Python中的抽象类详解:abstractmethod、abc与真实子类...
- select支持手动输入
- linux使用samba实现文件共享
- centos yum安装tracert_centos6.3如何打开tracert
- DIY四旋翼(穿越机)软硬件设计
- centos7.6 安装docker
- 腾讯广点通广告投放-Web转化数据API自归因文档对接
- js大数值单位转换千、万、亿单位,复制即可用
- Facebook再现丑闻,约100位应用程序开发人员偷看用户数据
- 浅谈网络地址转换(NAT)技术与内网、外网
热门文章
- AMD CPU 开启Android Studio emulator虚拟机
- msi2lmp不能用,mpi不能连接主机,解决办法看这里
- dnw linux 内核,神器DNW2 FOR LINUX!
- Color Models (RGB, CMY, HSI)
- 【学习OpenCV】使用OpenCV播放AVI视频
- mac80端口问题无法使用
- laravel mysql 事务_laravel框架中的MySQL事务处理 阿星小栈
- Linux查看mac地址
- How to learn a new technology
- 蛋白质二级、三级结构预测