如何将关键字参数作为参数传递给函数?

tbu*_*s13 3 python parameters arguments parameter-passing python-3.x

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

def inner_func(spam, eggs):
    # code
Run Code Online (Sandbox Code Playgroud)

然后,我想调用这样的函数:

outer_func(spam=45, eggs="blah")
Run Code Online (Sandbox Code Playgroud)

在内部,outer_func我希望能够inner_func使用与传入的参数完全相同的参数进行调用outer_func

可以这样编写outer_func

def outer_func(spam, eggs):
    inner_func(spam, eggs)
Run Code Online (Sandbox Code Playgroud)

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

有(简便)方法可以做到这一点吗?请使用Python 3。

use*_*ica 6

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

def outer_func(*args, **kwargs):
    inner_func(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

然后您可以做outer_func(1, 2, 3, a='x', b='y'),并且outer_func会打电话给inner_func(1, 2, 3, a='x', b='y')

如果仅允许使用关键字参数,请删除*args


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

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