示例:
def somerando(a,b,c,d):
if not a+b+c+d == 9000:
return (a+b+c+d)
somerando(1,2,3,4)
返回:10
但是
randonumbs = [1,2,3,4]
somerando(randonumbs)
给出以下错误:
TypeError跟踪(最近的呼叫 最后) ----> 1 somerando(randonumbs)
TypeError:somerando()缺少3个必需的位置参数:'b', 'c'和'd'
答案 0 :(得分:1)
您的函数需要4个参数。 randonumbs = [1,2,3,4]
是一个列表(包含四个项目);这是您的函数的一个参数。
您可以这样做:
randonumbs = [1,2,3,4]
somerando(*randonumbs)
在in this question或PEP 3132中讨论了星号(*
)的用法。
答案 1 :(得分:0)
您将 randonumbs
作为列表传递,这意味着此整个列表被视为函数somerando
的第一个参数
您可以使用 somerando(*randonumbs)
。
在这里,*
表示作为 tuple 通过&**
表示作为 dictionary (键,值对)通过,如果您在**
中使用函数参数/参数。
谢谢。
答案 2 :(得分:0)
* args的单星号形式可以用作参数,以将非关键字的变长参数列表发送给函数,如下所示
randonumbs = [1,2,3,4]
somerando(*randonumbs)
** kwargs的双星号形式用于将关键字的变长参数字典传递给函数。
randonumbs = {'a':1, 'b':2, 'c': 3, 'd': 4}
somerando(**randonumbs)