发现python的*args和**kwargs确实让函数突破了函数接受参数个数的限制,可以不用明文列出来但是用户可以无限输入多个参数。在很多教程中,我们都着重了讲了这类参数可以在函数类作为一个List来迭代遍历出所有参数,而在调用上,只是简单的在函数()参数列表中填入多个参数来说明。
但是有一种情况,如果我们参数元素用一个变量(list)来表示,那应该如何套入进去呢?
def test(*args):
for i in args:
print(i)
params_data=[1,2,3,4]
test(1,2,3,4) 我们可以理解,很多认为是 test(params_data), 因为这样是传入了一个列表,然后args也是当做一个列表来用,看样子很合逻辑,但是实际不是这样的,函数中会将params_data整体当作一个参数,而不是4个,如果要当作4个参数的话,应该怎么操作呢? 应该传递列表的地址,如下:
test(*params_data)
这是这几天编程的时候容易犯的一个错,记在这里防止下次又忘记了
网友评论