Как я могу передать 3 аргумента, являясь одним из них массивом в Python? - PullRequest
0 голосов
/ 17 июня 2019

У меня есть следующая функция, которую я обычно передаю в качестве аргументов Vm и Vp, однако, в некоторых случаях я хотел бы добавить также входной параметр numpy.array, называемый Yin.

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

В этом случае я сталкиваюсь с проблемой при вызове моей функции с Инь как 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 ]

3 голосов
/ 17 июня 2019

Вы неправильно понимаете использование *.

Вы объявили свой метод следующим образом:

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 голос
/ 17 июня 2019
for yin in ec_0_04:
        EC,C = pinsAsLine.solveTransmissionLineDistrbutedE(-1,-1,Yin=yin)

Передать весь массив в качестве аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...