python3工具模块functools的使用方法

functools工具函数在一般业务中用到的不太多,我们日常基本只用到三个函数,其中一个reduce之前有过一个笔记,详情可以查看https://sulao.cn/post/683.html,另外两个函数我们今天来介绍下使用方法

我们先来看看functools中有哪些工具函数

print(dir(functools))

打印结果

['RLock', 'WRAPPER_ASSIGNMENTS', 'WRAPPER_UPDATES', '_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', 'recursive_repr', 'reduce', 'singledispatch', 'total_ordering', 'update_wrapper', 'wraps']

1.partial偏函数

这个函数可以把设置某些函数的参数的默认值从而返回一个新函数,我们可以看下示例

#!/usr/bin/python3
#coding:utf-8
from functools import partial
def test(*args):
    print(args)

print_str = partial(test, "a","b","c")
print_str()
print_str("d","e","f")

打印得到结果

('a', 'b', 'c')
('a', 'b', 'c', 'd', 'e', 'f')

我们可以看到生成的新函数print_str默认打印了a,b,c三个参数

1warps函数

这个函数在我目前的项目中比较有用,在使用flask的视图函数时碰到了这个问题

在一个函数被装饰器修饰以后其实函数的属性也发生了变化,所以影响了原本的函数导致报错,所以需要warps这个函数来消除这个影响,主要使用在我们的装饰器中,例如

#!/usr/bin/python3
#coding:utf-8
def wrap(func):
    def _wrap(param):
        '''something '''
        return func(param)
    return _wrap

我们需要添加一个修饰

#!/usr/bin/python3
#coding:utf-8
from functools import wraps
def wrap(func):
    @wraps(func)
    def _wrap(param):
        '''something '''
        return func(param)
    return _wrap


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/714.html