将n个参数传递给Python中的函数

时间:2013-04-11 15:44:09

标签: python arguments

我有一个函数,它将可变数量的变量作为参数。我如何将以下示例中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()和其他几个功能

3 个答案:

答案 0 :(得分:3)

args是一个元组。 *argsarg转换为参数列表。您可以使用与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)