Discuss / Python / 这一节真的把我绕晕了

这一节真的把我绕晕了

Topic source

nstart0902

#1 Created at ... [Delete] [Delete and Lock User]

函数的参数一节最后一句话:任何的函数都可以通过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) 编译通过

感觉没毛病,可以看看下面这个例子(已在交互模式进行了验证)

>>> 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

Reply