前言

这几年一直在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_clearcache_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相关推荐

  1. python中functools_python functools模块

    functools模块是Python标准模块 1. 模块简介 functools: 用于高阶函数, 指那些作用域函数或者返回其它函数的函数, 通常只要是可以被当做函数调用的对象就是这个模块的目标. 2 ...

  2. python 模块 导入机制 模块搜索 Python包 发布python模块或程序

    python 模块 python模块:以.py结尾的代码文件.        顶层文件: 程序执行入口        模块文件1        模块文件2        模块文件3 在python中一 ...

  3. Python3,我用这种方式讲解python模块,80岁的奶奶都说能理解。建议收藏 ~ ~

    Python模块讲解 1.引言 2.python模块详解 2.1 含义 2.2 代码示例 2.3 进阶 3.总结 1.引言 小屌丝:鱼哥,你看天上的月亮越来越圆了. 小鱼:唉~ 又是一年团圆夜,又是一 ...

  4. Python模块(自己整理并不完整)

    PY核心模块方法 ******************** os模块: os.remove() 删除文件  os.unlink() 删除文件  os.rename() 重命名文件  os.listdi ...

  5. python functools partial_浅谈python标准库--functools.partial

    一.简单介绍: functools模块用于高阶函数:作用于或返回其他函数的函数.一般而言,任何可调用对象都可以作为本模块用途的函数来处理. functools.partial返回的是一个可调用的par ...

  6. GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态

    GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态 一个Python模块,用于在Python中使用nvidia-smi以编程方式从NVIDA GPU获取GP ...

  7. 在Ubuntu 14.04.5 LTS上安装python模块selenium 3实录

    简介 Selenium是python模块库中一组web自动化测试工具集,提供多种语言的API,例如java,python,ruby,.net等,支持Firefox,Chrome,IE,Safari 等 ...

  8. Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8

    我使用python的MySQLdb模块实现了一个mysql client, 在测试时,出现了如下错误 Python模块MySQLdb操作mysql出现2019错误:Can't initialize c ...

  9. Python培训教程分享:Python模块如何导入__all__属性?

    本期小编为大家带来的Python培训教程是关于"Python模块如何导入__all__属性?"的内容,后面在工作中是会遇到Python模块这个工作内容的,Python模块的开头通常 ...

  10. 分享3个好用到爆的 Python 模块,点赞收藏

    作者 | 俊欣 来源 | 关于数据分析与可视化 今天给大家介绍3个特别好用的Python模块,知道的人可能不多,但是特别的好用. Psutil Pendulum Pyfiglet Psutil Pyt ...

最新文章

  1. python3操作mysql教程_python3操作mysql教程
  2. Android-room的学习
  3. Struts+Hibernate+MyEclipse+Tomcat+MySQL的乱码之解决
  4. SAP PM 初级系列13 - PM Revision
  5. Spring 4.2.2以上版本和swagger集成方案和踩过的坑
  6. Mysql 百万级数据优化资料
  7. [深度学习] Normalization 模型
  8. vue路由传参的三种基本方式 - 流年的樱花逝 - SegmentFault 思否
  9. 完全卸载mysql数据库图文教程
  10. 码云上传代码添加标签_第一次使用Git Bash Here 将本地代码上传到码云
  11. python的抽象类详解_第7.19节 Python中的抽象类详解:abstractmethod、abc与真实子类...
  12. select支持手动输入
  13. linux使用samba实现文件共享
  14. centos yum安装tracert_centos6.3如何打开tracert
  15. DIY四旋翼(穿越机)软硬件设计
  16. centos7.6 安装docker
  17. 腾讯广点通广告投放-Web转化数据API自归因文档对接
  18. js大数值单位转换千、万、亿单位,复制即可用
  19. Facebook再现丑闻,约100位应用程序开发人员偷看用户数据
  20. 浅谈网络地址转换(NAT)技术与内网、外网

热门文章

  1. AMD CPU 开启Android Studio emulator虚拟机
  2. msi2lmp不能用,mpi不能连接主机,解决办法看这里
  3. dnw linux 内核,神器DNW2 FOR LINUX!
  4. Color Models (RGB, CMY, HSI)
  5. 【学习OpenCV】使用OpenCV播放AVI视频
  6. mac80端口问题无法使用
  7. laravel mysql 事务_laravel框架中的MySQL事务处理 阿星小栈
  8. Linux查看mac地址
  9. How to learn a new technology
  10. 蛋白质二级、三级结构预测