在期望项列表的函数中,如何传递Python列表项而不得到错误?
my_list = ['red', 'blue', 'orange']
function_that_needs_strings('red', 'blue', 'orange') # works!
function_that_needs_strings(my_list) # breaks!
肯定有一种方法来扩展列表,并传递'红色','蓝色','橙色'的函数?我想这就是所谓的“开箱”。
在期望项列表的函数中,如何传递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!
你可以在这里阅读所有关于它的内容:解包参数列表- Python教程
是的,你可以使用*args (splat)语法:
function_that_needs_strings(*my_list)
其中my_list可以是任何可迭代对象;Python将遍历给定对象,并将每个元素用作函数的单独参数。
请参阅调用表达式文档。
还有一个关键字-参数等价的,使用两个星号:
kwargs = {'foo': 'bar', 'spam': 'ham'}
f(**kwargs)
在函数签名中指定catch-all参数有等价的语法:
def func(*args, **kw):
# args now holds positional arguments, kw keyword arguments
从Python 3.5开始,你可以无限地解包列表。
PEP 448 -附加的解包概括
这是可行的:
a = ['1', '2', '3', '4']
b = ['5', '6']
function_that_needs_strings(*a, *b)