说我有一个这样定义的函数:
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/