这一节真的把我绕晕了
Topic source感觉没毛病,可以看看下面这个例子(已在交互模式进行了验证)
>>> def f(*args, **kw):
print(args)
print(kw)
>>> import functools
>>> f1 = functools.partial(f, 1, 2, a = 1, b = 2)
>>> f1(3, 4, c = 3, d = 4)
(1, 2, 3, 4)
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> f1(a = 2, b = 3)
(1, 2)
{'a': 2, 'b': 3}
>>>
- 1
nstart0902
函数的参数一节最后一句话:任何的函数都可以通过func(*args,**kw)来调用,无论函数的参数是如何定义的
偏函数先将自己的不带key参数和新函数的调用不带key参数组成*args,注意偏函数参数在前(在左),带key的组成**kw(调用中的同名key会覆盖偏函数中的)
然后通过func(*args,**kw)去调用原函数
现在来看教程中的例子:int2=functools.partial(int,base=2) int2('1000000') 偏函数没有带key的参数,此时*args=['1000000'],**kw={'base':2} 然后调用int(*args,**kw)
自动分配变量,编译通过。
max2=functools.partial(max,10) 偏函数的不带key参数和新函数的调用参数组合成*args=[10,5,6,7] **kw={} 然后调用max(*args,**kw) 编译通过