3

我有一个函数,它接受可变数量的变量作为参数。我将如何将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()和其他几个函数。

4

3 回答 3

4

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 转换为命名参数列表。

于 2013-04-11T15:57:38.537 回答
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
于 2013-04-11T15:45:36.943 回答
0

怎么样:

myfunc(*arguments)

关键字参数也是如此,例如:

def myfunc(*args, **kwargs):
    # pass them to another, e.g. super
    another_func(*args, **kwargs)
于 2013-04-11T15:47:23.713 回答