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

2024-04-19 15:12:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的函数,通常作为参数传递VmVp,hoewever,在某些情况下,我还想添加一个输入参数anumpy.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看到一个三的函数有四个输入,但是我不知道如何正确地将数组作为输入传递给函数。你知道吗

有什么提示吗?你知道吗

提前谢谢


Tags: 函数numpy参数错误情况vmarrayec
2条回答

你误解了*的用法。你知道吗

您这样声明您的方法:

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

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

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

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

By the way, I may be wrong but I don't think the * to be of any use in your method declaration.

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

将整个数组作为参数传递。你知道吗

相关问题 更多 >