Python 将列表传递给函数以用作多个参数

Python 将列表传递给函数以用作多个参数,python,list,parameter-passing,Python,List,Parameter Passing,我认为“unpack”可能是这里的错误词汇-抱歉,因为我确信这是一个重复的问题 我的问题很简单:在一个需要项目列表的函数中,如何传递Python列表项目而不出错 my_list = ['red', 'blue', 'orange'] function_that_needs_strings('red', 'blue', 'orange') # works! function_that_needs_strings(my_list) # breaks! 肯定有办法扩展列表,并将函数“红色”、“蓝色”

我认为“unpack”可能是这里的错误词汇-抱歉,因为我确信这是一个重复的问题

我的问题很简单:在一个需要项目列表的函数中,如何传递Python列表项目而不出错

my_list = ['red', 'blue', 'orange']
function_that_needs_strings('red', 'blue', 'orange') # works!
function_that_needs_strings(my_list) # breaks!
肯定有办法扩展列表,并将函数
“红色”、“蓝色”、“橙色”
传递给用户

function_that_needs_strings(*my_list) # works!

是的,您可以使用
*args
(splat)语法:

其中
my_list
可以是任何可编辑的;Python将在给定对象上循环,并将每个元素用作函数的单独参数

还有一个等价的关键字参数,使用两颗星:

kwargs = {'foo': 'bar', 'spam': 'ham'}
f(**kwargs)
在函数签名中指定catch all参数的方法有:

def func(*args, **kw):
    # args now holds positional arguments, kw keyword arguments

由于Python3.5,您可以解包无限量的
list
s

因此,这将起作用:

a = ['1', '2', '3', '4']
b = ['5', '6']
function_that_needs_strings(*a, *b)

我怎样才能在python 2.7或3.4上实现同样的效果?@answerSeeker效率不高,但需要字符串(*(a+b))的
function\u
哇,真不敢相信在此之前你不能。
a = ['1', '2', '3', '4']
b = ['5', '6']
function_that_needs_strings(*a, *b)