如何在Python中传递3个参数作为数组之一?

时间:2019-06-17 13:08:20

标签: python numpy

我有以下函数,通常我会以参数VmVp的形式传递,但是在某些情况下,我还要添加输入参数numpy.array,称为Yin

def solveTransmissionLineDistrbutedE(self,Vm,Vp,*,Yin=0):

在这种情况下,当我用Yin调用函数时,我面临一个问题 像下面这样的numpy.arry

ec_0_04 = numpy.array([
                      [0.00188453428035827 + 0.0124200286145695j],
                      [0.00188453428035827 + 0.0124200286145695j]
                      ])
for yin in ec_0_04:
        EC,C = pinsAsLine.solveTransmissionLineDistrbutedE(-1,-1,*yin)

然后,Python抱怨此错误

    EC,C = pinsAsLine.solveTransmissionLineDistrbutedE(-1,-1,numpy.array([0.00188453428035827 + 0.0124200286145695j]))
TypeError: solveTransmissionLineDistrbutedE() takes 3 positional arguments but 4 were given

我确实理解该错误,Python看到三个函数的四个输入,但是我不确定如何正确地将数组作为该函数的输入。

有任何提示吗?

预先感谢

2 个答案:

答案 0 :(得分:3)

您误解了*的使用。

您这样声明了您的方法:

def solveTransmissionLineDistrbutedE(self,Vm,Vp,*,Yin=0):

这意味着您的函数将self作为第一个参数,VmVp作为第二和第三。它们是位置参数。然后它将接受一个命名参数(或仅关键字参数):Yin

最后,您应该像这样调用方法:

for yin in ec_0_04:
     EC,C = pinsAsLine.solveTransmissionLineDistrbutedE(-1,-1,Yin=yin)
  

顺便说一句,我可能是错的,但我认为*在您的方法声明中没有任何用处。

答案 1 :(得分:1)

for yin in ec_0_04:
        EC,C = pinsAsLine.solveTransmissionLineDistrbutedE(-1,-1,Yin=yin)

将整个数组作为参数传递。