我在PYTHON中编写了一个函数,但是我发现SUM在它中无法正常工作。
def func(a,*b):
c = np.array([1,a,a**2,a**3])
d = np.array(b)
return sum(c*d)
a = 10
b = [0.1,0.2,0.3,0.4]
aa = np.array([1,a,a**2,a**3])
bb = np.array(b)
c = func(a,b)
print sum(aa*bb),c
代码的输出为432.1 [ 1.00000000e-01 2.00000000e+00 3.00000000e+01 4.00000000e+02]
。
有谁知道SUM在这里发生了什么?
答案 0 :(得分:4)
您的func
函数签名使用b
作为一个包含所有标记,将*
捕获为参数列表。这使得b
列表中包含一个参数。但要定义bb
,你不要这样做;你传入只是列表。
要么:
bb = np.array([b])
或做:
def func(a, b):
c = np.array([1,a,a**2,a**3])
d = np.array(b)
return sum(c*d)
或
def func(a, *b):
c = np.array([1,a,a**2,a**3])
d = np.array(b[0])
return sum(c*d)
使两个代码路径等效。