Python中为何无法使用变量作为参数调用该函数?
嘿,这个问题我熟!咱们先搞明白为啥会报错:
你定义的somerando函数明确要求4个独立的位置参数a、b、c、d,但当你直接把列表randonumbs作为参数传进去时,Python会把整个列表当成一个单独的参数传给a,剩下的b、c、d就没人给了,这就触发了那个TypeError。
解决办法很简单:用列表解包运算符*
调用函数的时候,在列表前面加个*,就能把列表里的元素逐个“拆”出来,分别对应函数的4个参数:
def somerando(a,b,c,d): if not a+b+c+d == 9000: return (a+b+c+d) randonumbs = [1,2,3,4] # 正确调用方式:用*解包列表 print(somerando(*randonumbs)) # 输出:10
这样运行就没问题啦,和你直接传somerando(1,2,3,4)的效果完全一样。
再拆解下你的错误信息
当时的错误栈清晰地指出了问题:
TypeError Traceback (most recent call last) <ipython-input> in <module> ----> 1 somerando(randonumbs) TypeError: somerando() missing 3 required positional arguments: 'b', 'c', and 'd'
它直白告诉你:函数还缺3个必要的位置参数——就是因为你只传了一个列表(被当作a),剩下的三个参数都没传到位。
内容的提问来源于stack exchange,提问作者Ren Gal
相关产品推荐
相关产品推荐

