我有一个函数,它有 4 个参数定义为:
call(a,b,c,d):
我有另一个函数叫做
return_args() #that returns 4 variables.
当我执行以下操作时:
call(return_args()) #it errors out saying, that's 1 arguments, not 4 arguments
我知道我可以将 4 个变量存储在 call() 之前的另一行中,但可以在 call() 行中返回所有变量。
请您参考如下方法:
你可以使用*参数解包
call(*return_args())
这是以下内容的简写形式:
a, b, c, d = return_args()
call(a, b, c, d)
甚至
tup = return_args()
call(*tup)
以这种方式使用的 Python 的 * 运算符本质上是说“解压这个元组并将解压后的值作为参数传递给这个函数”。
相关运算符 ** 对关键字参数做了类似的技巧:
def call(arg1=None, arg2=None, **kwargs):
pass
kwargs = {'arg1': 'test', 'arg3': 'whatever'}
call(**kwargs)
* 和 ** 可以一起使用:
def call(*args, **kwargs):
pass
call(*return_args(), **kwargs)
