将一个值列表而不是多个参数传递给函数?

Posted

技术标签:

【中文标题】将一个值列表而不是多个参数传递给函数?【英文标题】:passing one list of values instead of mutiple arguments to a function? 【发布时间】:2012-06-19 08:01:18 【问题描述】:

假设有一个函数func() 接受两个参数,ab。 Python 中是否有某种技术可以将具有两个值的单个列表 mylist 传递给函数?

def myfunc(a, b):
    return a+b

myfunc([1, 2])

如果一个人完全确定他总是调用同一个函数并且知道它需要多少个参数,那么可以做这样的事情:

mylist = [1, 2]
a, b = mylist

myfunc(a, b)

但是,如果您有需要提供给某些函数的列表,并且每个列表都有不同数量的参数怎么办? 可以为他的每个函数编写单独的代码行,将列表解压缩为变量并将它们传递给相应的函数,但是如果 Python 有内置的东西来传递单个列表而不是单个参数值(如果事先确定list 具有相应数量的值),那么这看起来会好很多,最重要的是需要的代码行数要少得多。

【问题讨论】:

【参考方案1】:

您可以使用* 到unpack the list into arguments:

myfunc(*mylist)

【讨论】:

我知道 Python 会有这样的东西! @user975135 这也可以用 dicts 来完成,这对于关键字参数或调用具有许多参数的函数很有用:mydict = 'a': 1, 'b': 2myfunc(**mydict)【参考方案2】:
def myfunc(a, b):
    return a+b

mylist = [1, 2]
myfunc(*mylist)

这里mylist可以是listtuplestring等长度为2。

【讨论】:

以上是关于将一个值列表而不是多个参数传递给函数?的主要内容,如果未能解决你的问题,请参考以下文章

将多个参数传递给表值函数

值传递和引用传递

C++ 将列表作为参数传递给函数

Excel VBA - 将参数参数传递给 Sub

Java中的参数传递

JAVA中的值传递和引用传递问题