python学习之偏函数partial

partial 一共有三个部分:
(1)第一部分也就是第一个参数,是一个函数,这个函数可以是你定义的,也可以是Python内置函数
(2)第二部分是一个可变参数,*args,
(3)第三部分是一个关键字参数 **args,
partial函数的作用就是:将所作用的函数作为partial()函数的第一个参数,
原函数的各个参数依次作为partial()函数的后续参数,原函数有关键字参数的一定要带上关键字,
没有的话,按原有参数顺序进行补充。

Python版本3.6
from functools import partial

def sum_add(*args1):
def decorator(func):
def my_sum(*args2):
my_s=0
for n in args1:
my_s+=n
return func(*args2)+my_s
return my_sum
return decorator

@sum_add(10,20)
def test_sum(*args):
value=0
for i in args:
value+=i
return value

print(test_sum(1,2,3,4,5))
#########################以上通过带参数装饰器,获得1+2+3+4+5+10+20 列子

def sum(*args):
s=0
for n in args:
s=s+n
return s

sum_add_10=partial(sum,10)
sum_add_10_20=partial(sum,10,20)
print(sum)
print(partial(sum,10))
print(sum_add_10(1,2,3,4,5))
print(sum_add_10_20(1,2,3,4,5))
print('*'*50)
#############################偏函数列子1##########################
L=list(range(1,11))
slice_5_10=partial(slice,5,10) #slice内置函数slice(start,stop,step) 函数实现切片对象,主要用在切片操作函数里的参数传递。
print(L[slice_5_10()])

print('*'*50)
#############################偏函数列子2##########################

def mod(m,key=2):
return m%key==0

mod_to_2=partial(mod,key=2)
print(mod(6))
print(mod_to_2(3))

mod_to_5=partial(mod,key=5)
print(mod(25,key=5))
print(mod_to_5(35))

猜你喜欢

转载自www.cnblogs.com/jinpingzhao/p/12584527.html