将列表传递给函数作为多个参数
在一个需要列表作为输入的函数里,我该怎么传递一个Python列表里的单个项目而不出错呢?
my_list = ['red', 'blue', 'orange']
function_that_needs_strings('red', 'blue', 'orange') # works!
function_that_needs_strings(my_list) # breaks!
肯定有办法把列表展开,然后直接把 'red','blue','orange'
传给这个函数吧?我觉得这叫做“解包”。
3 个回答
19
从Python 3.5开始,你可以解包任意数量的list
。
所以这样写是可以的:
a = ['1', '2', '3', '4']
b = ['5', '6']
function_that_needs_strings(*a, *b)
51
是的,你可以使用 *args
这种写法(也叫做“星号参数”):
function_that_needs_strings(*my_list)
这里的 my_list
可以是任何可迭代的对象;Python 会遍历这个对象,把每个元素当作单独的参数传给函数。
你可以查看 调用表达式的文档,了解更多信息。
还有一种使用两个星号的写法,用来处理关键字参数:
kwargs = {'foo': 'bar', 'spam': 'ham'}
f(**kwargs)
此外,还有 类似的语法,可以在函数定义中指定接收所有额外参数:
def func(*args, **kw):
# args now holds positional arguments, kw keyword arguments
365
function_that_needs_strings(*my_list) # works!
你可以在这里了解更多内容:解包参数列表 - Python教程