为什么不能在python中使用变量作为参数来调用这个函数?

Why can I not call this function using a variable as an argument in Python?

实例: </P >

1
2
3
4
5
def somerando(a,b,c,d):
    if not a+b+c+d == 9000:
        return (a+b+c+d)

somerando(1,2,3,4)

10时返回。 </P >

但 </P >

1
2
3
randonumbs = [1,2,3,4]

somerando(randonumbs)

给下面的错误: </P >

TypeError Traceback (most recent call
last) in
----> 1 somerando(randonumbs)

TypeError: somerando() missing 3 required positional arguments: 'b',
'c', and 'd'


函数需要4个参数。randonumbs = [1,2,3,4]是一个列表(共四项);这是您函数的一个参数。

你可以这样做:

1
2
randonumbs = [1,2,3,4]
somerando(*randonumbs)

星号(*的用法在本问题或PEP 3132中进行了讨论。


*args的单星号形式可用作参数,以向函数发送非关键字变长参数列表,如下所示

1
2
randonumbs = [1,2,3,4]
somerando(*randonumbs)

**kwargs的双星号形式用于将关键字可变长度参数字典传递给函数。

1
2
randonumbs = {'a':1, 'b':2, 'c': 3, 'd': 4}
somerando(**randonumbs)


您将randonumbs作为list传递,意味着整个list被视为函数somerando的第一个参数
您可以使用somerando(*randonumbs)
BR/>这里,如果在函数参数/参数中使用**,则*表示pass as tuple&**表示pass as dictionary(key,value pair)。


谢谢。