我有一个函数,它将可变数量的变量作为参数。我如何将以下示例中some_list
的内容发送到myfunc2()
def myfunc1(*args):
arguments = [i for i in args]
#doing some processing with arguments...
some_list = [1,2,3,4,5] # length of list depends on what was passed as *args
var = myfunc2(???)
我能想到的唯一方法是将列表或元组作为参数传递给myfunc2()
,但也许有一个更优雅的解决方案,所以我不必重写myfunc2()
和其他几个功能
答案 0 :(得分:3)
args
是一个元组。 *args
将arg
转换为参数列表。您可以使用与myfunc2
相同的方式定义myfunc1
:
def myfunc2(*args):
pass
要传递参数,您可以逐个传递:
myfunc2(a, b, c)
使用*
运算符的石斑鱼。
newargs = (a, b, c)
myfunc2(*newargs)
或使用两种技术的组合:
newargs = (b, c)
myfunc2(a, *newargs)
同样适用于**
运算符,它将dict转换为命名参数列表。
答案 1 :(得分:2)
这是非常广泛可用且易于谷歌...我好奇你搜索的是你无法找到解决方案
def myfunc1(*args):
arguments = args
some_other_args = [1,2,3,4]
my_var = myfunc2(*some_other_args) #var is not an awesome variablename at all even in examples
答案 2 :(得分:0)
怎么样:
myfunc(*arguments)
与关键字参数相同,例如:
def myfunc(*args, **kwargs):
# pass them to another, e.g. super
another_func(*args, **kwargs)