functools

2023-12-26 07:32
文章标签 functools

本文主要是介绍functools,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

functools

functools 是python2.5被引人的,一些工具函数放在此包里。

python2.7中

functools函数

python3.5中

import functools
dir(functools)
运行结果:['MappingProxyType','RLock','WRAPPER_ASSIGNMENTS','WRAPPER_UPDATES','WeakKeyDictionary','_CacheInfo','_HashedSeq','__all__','__builtins__','__cached__','__doc__','__file__','__loader__','__name__','__package__','__spec__','_c3_merge','_c3_mro','_compose_mro','_convert','_find_impl','_ge_from_gt','_ge_from_le','_ge_from_lt','_gt_from_ge','_gt_from_le','_gt_from_lt','_le_from_ge','_le_from_gt','_le_from_lt','_lru_cache_wrapper','_lt_from_ge','_lt_from_gt','_lt_from_le','_make_key','cmp_to_key','get_cache_token','lru_cache','namedtuple','partial','partialmethod','reduce','singledispatch','total_ordering','update_wrapper','wraps']

python3中增加了更多工具函数,做业务开发时大多情况下用不到,此处介绍使用频率较高的2个函数。

partial函数(偏函数)

把一个函数的某些参数设置默认值,返回一个新的函数,调用这个新函数会更简单。

import functoolsdef showarg(*args, **kw):print(args)print(kw)p1=functools.partial(showarg, 1,2,3)
p1()
p1(4,5,6)
p1(a='python', b='itcast')p2=functools.partial(showarg, a=3,b='linux')
p2()
p2(1,2)
p2(a='python', b='itcast')

partial

wraps函数

使用装饰器时,有一些细节需要被注意。例如,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变)。

添加后由于函数名和函数的doc发生了改变,对测试结果有一些影响,例如:

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__)
运行结果note something
I am test
wrapper function

所以,Python的functools包中提供了一个叫wraps的装饰器来消除这样的副作用。例如:
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__)
运行结果note something
I am test
test function


这篇关于functools的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/538571

相关文章

Python高级编程:Functools模块的8个高级用法,强烈建议添加到你的开发工具箱中!

目录 1. functools.partial 2. functools.lru_cache lru_cache的特点 cache的特点 性能比较与选择 3. functools.reduce functools.reduce的作用 工作原理 示例 累加序列中的所有元素 计算阶乘 initializer的使用 应用场景 示例:计算平均销售额 小结 4. functo

Python基础总结之functools.partial

Python基础总结之functools.partial 在日常编程中,我们经常会遇到这样的情况:需要调用一个函数,但希望它的某些参数被预先设置好,而不是每次调用时都手动传递这些参数。Python 的 functools.partial 提供了一种优雅的方式来实现这一需求。 什么是 functools.partial? functools.partial 是 Python 标准库中的一个高阶

初识functools模块

functools docs.python.org The functools module is for higher-order functions: functions that act on or return other functions. 包含功能 装饰器 @functools.cached_property(func)@functools.lru_cache(user_f

Python之functools模块之lru_cache

Python之functools模块之lru_cache lru_cache @functools.lru_cache(maxsize=128, typed=False)lru即Least-recently-used,最近最少使用。cache缓存 如果maxsize设置为None,则禁用LRU功能,并且缓存可以无限制增长。当maxsize是二的幂时,LRU功能执行得最好如果typed设置为Tr

Python的functools模块详解

Python的functools模块用以为可调用对象(callable objects)定义高阶函数或操作。简单地说,就是基于已有的函数定义新的函数。 所谓高阶函数,就是以函数作为输入参数,返回也是函数。 1. functools模块的引用 from functools import partial 2. functools模块的组成 partial(func, *args, **ke

Python 轻松应对复杂编程 functools模块速查表

文章目录 文章开篇functools简介reduce 二元归约1.计算列表中所有元素的和2.计算列表中所有元素的积3.连接列表中所有的字符串4.使用初始值进行累积操作 partial 偏函数partialmethod 偏类实例cmp_to_key 转换函数cached_property 缓存实例lru_cache 通过缓存增加代码性能total_ordering 补全比较方法single

Python 学习入门(38)—— @functools模块

The functools module is for higher-order functions: functions that act on or return other functions. In general, any callable object can be treated as a function for the purposes of this module. fu

Python学习笔记--内置模块functools中的lru_cache()函数

在编写一些应用中,我们的一些函数常常需要做一些耗时较长的操作,比如调用第三方API,进行复杂的运算等。尤其是处理数据的一些应用,需要重复计算,或者从外部获取数据,可以使用内置模块functools中的lru_cache()函数把计算的数据缓存下来,在后面重复计算使用数据时,就不再计算而是从缓存中获取前面计算过的数据,从而提升效率。 lru_cache()是一个装饰器,它可以用于将一个函数的结果缓

Python3 functools partial 偏函数

今天我们要讲的偏函数,其实是函数的辅佐,什么意思呢,我们借助Python的help帮助函数,看一下 Shell | <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/partial" title="View all posts in partial

@functools.wraps的作用

一、前置说明 1、本节目标 了解 @functools.wraps 的作用。 2、相关回顾 Python 装饰器基础Python 装饰器执行过程详解 二、主要内容 1、问题代码 下面是一段 不能正确显示函数名 的问题代码: def log_decorator(func):def wrapper(*args, **kwargs):print(f"Calling {func.__nam