【发布时间】:2018-11-13 15:23:26
【问题描述】:
假设我有以下功能
def f(x,y,**kwargs):
if 'z' in kwargs:
z = kwargs['z']
else:
z = 0
print(x + y + z)
它接受两个参数和一个可选的关键字参数。我现在想得到一个函数 g,它的工作原理与 f 一样,但 z 的值是预先确定的。因此,我可以执行以下操作
def g(x,y):
z = 3
f(x,y, z = 3)
但是,如果我不知道 f 采用的非关键字参数的数量,我该怎么办。我可以通过
获得这些参数的列表args = inspect.getargspec(f)[0]
但是,如果我现在将 g 定义为
g(args):
z = 3
f(args, z=z)
这当然不起作用,因为只有一个强制参数传递给 f。我该如何解决这个问题?也就是说,如果我有一个采用关键字参数的函数,我如何定义第二个函数,与关键字参数采用预先确定的值完全相同?
【问题讨论】:
-
如果在
f中的args前加一个*,比如f(*args, z=z),应该可以吗?
标签: python arguments keyword keyword-argument