4.8 Python3 进阶 - 偏函数
>>返回主目录
源码
from functools import partial
# 有默认值关键字参数的函数
# 例如:改变int函数的默认关键字参数值
print('原int函数,默认base=10:', int('101'))
# 通过partial函数实现,创建一个新的int_2函数
int_2 = partial(int, base=2)
print('新int_2函数,默认base=2:', int_2('101'))
源码
from functools import partial
# 没有默认值关键字参数的函数
# 例如:求两组数据的和,其中一组数据固定不变
# 自定义一个求和函数
def _sum(*args):
print('当前args的值是:', args)
total = 0
for i in args:
total += i
return total
list_a = [2, 8, 5, 9, 11]
list_b = [10, 20]
tuple_c = (3, 7, 6)
sum_result = _sum(*list_a) + _sum(*list_b)
print('方法一:分而治之:', sum_result)
print('方法二:合而治之:', _sum(*(list_a + list_b)))
# 通过partial函数创建一个新的sum_add_10_20函数
sum_add_10_20 = partial(_sum, *list_b)
print('方法三:通过偏函数默认list_b参数,对list_a和list_b求和:', sum_add_10_20(*list_a))
print('方法三:通过偏函数默认list_b参数,对tuple_c和list_b求和:', sum_add_10_20(*tuple_c))
源码
# 使用装饰器实现上述partial函数功能
def sum_add(*args1):
def decorator(func):
@wraps(func)
def wrapper_sum(*args2):
total = 0
for i in args2:
total += i
return func(*args1) + total
return wrapper_sum
return decorator
# 自定义一个求和函数
@sum_add(*list_b)
def _sum(*args):
total = 0
for i in args:
total += i
return total
print('调用被装饰过的自定义函数:', _sum(*list_a))
>>返回主目录
作者: PortosHan
出处: https://www.cnblogs.com/PortosHan/
关于作者:专注于软件测试、测试开发等领域,请多多赐教!
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。 原文链接 如有问题,可邮件(bhanzdan@163.com)咨询。