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