我有以下函数,通常我会以参数Vm
和Vp
的形式传递,但是在某些情况下,我还要添加输入参数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看到三个函数的四个输入,但是我不确定如何正确地将数组作为该函数的输入。
有任何提示吗?
预先感谢
答案 0 :(得分:3)
您误解了*
的使用。
您这样声明了您的方法:
def solveTransmissionLineDistrbutedE(self,Vm,Vp,*,Yin=0):
这意味着您的函数将self
作为第一个参数,Vm
和Vp
作为第二和第三。它们是位置参数。然后它将接受一个命名参数(或仅关键字参数):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)
将整个数组作为参数传递。