1.抛出问题
计算2个n个数的和再相加
1.2解决
问题非常的简单,实现也十分的容易,无非是两次调用sum函数再相加。但是这种程序看起来显得程序比较低级,且冗余。
def sum(*arg):
sum_all = 0
for item in arg:
sum_all= sum_all + item
return sum_all
print(sum(1,2,3)+sum(4,5,6))
"""
输出为21
"""
1.3改进
虽然再本例中看起来程序并没有改进多少,代码反而变多了。但是在GUI编程等拥有大量重复性参数的时候,能够大量的较少重复阐述的输入。
from functools import partial
def sum_all(*arg):
sum_all = 0
for item in arg:
sum_all= sum_all + item
return sum_all
sum_partical = partial(sum_all,4,5,6)
print(sum_partical(1,2,3))
print(sum_partical(1,2,4))
print(sum_partical(1,2,5))
"""
输出为21
输出为22
输出为23
"""
2.partical详解
functools.
partial
(func[,*args][, **keywords])
partial 一共有三个部分:
(1)第一部分也就是第一个参数,是一个函数,这个函数可以是你定义的,也可以是Python内置函数
(2)第二部分是一个可变参数,可选。partial函数会将func的结果加上将args参数代入func的结果。
(3)第三部分是一个关键字参数,可选。原函数有关键字参数的一定要带上关键字。比如内置函数int的第二个参数就是命名关键字参数,默认base=10,表示int转换时默认是10进制的:
3.偏函数和装饰器的区别
偏函数类似于装饰器dectorator,对函数进行二次包装,但又不同于装饰器,偏函数产生一个新函数,而装饰器,可改变装饰函数的函数入口地址也可以不影响原函数。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
装饰器:https://mp.youkuaiyun.com/postedit/81084518
参考:https://blog.youkuaiyun.com/Appleyk/article/details/77609114