说我有一个这样定义的函数:

def inner_func(spam, eggs):
    # code

然后我想调用这样的函数:
outer_func(spam=45, eggs="blah")

outer_func 内部,我希望能够使用与传递给 inner_func 的参数完全相同的参数来调用 outer_func

这可以通过像这样编写 outer_func 来实现:
def outer_func(spam, eggs):
    inner_func(spam, eggs)

但是,我希望能够更改 inner_func 采用的参数,并相应地更改我传递给 outer_func 的参数,但不必每次更改 outer_func 中的任何内容。

有没有(简单的)方法来做到这一点?请使用 Python 3。

最佳答案

看起来您正在寻找 *** 符号:

def outer_func(*args, **kwargs):
    inner_func(*args, **kwargs)

然后你可以做 outer_func(1, 2, 3, a='x', b='y')outer_func 会调用 inner_func(1, 2, 3, a='x', b='y')

如果您只想允许关键字参数,请删除 *args

在函数定义中,用 * 标记的参数接收与其他声明参数不对应的所有位置参数的元组,而用 ** 标记的参数接收所有与其他声明参数不对应的关键字参数的字典。

在函数调用中,使用 * 为序列(或其他可迭代)参数添加前缀将其解包为单独的位置参数,并使用 ** 作为映射参数的前缀将其解包为单独的关键字参数。

关于python - 如何将关键字参数作为参数传递给函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42724242/

10-11 22:51
查看更多