2015-11-24 1 views
0

Используя Python 3.5, я вставляю несколько многомерных списков в MySQL Query, который вставляет несколько строк в таблицу. Вот мой код исполнения сниппет:Почему PyCharm дает мне предупреждения для «Duplicate * arg»?

for x, y, z, i in zip(list1, list2, list3, list4): 
    cursor.execute(add_related_accounts_query.format(x[0], *y, *z, *i)) 

Запрос работает нормально, но PyCharm дает мне это предупреждение:

Повторяющиеся * арг

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

Если я нажимаю Alt + Enter зафиксировать предупреждение через PyCharm, он устраняет *z, *i, а затем запрос больше не работает.

Может кто-нибудь объяснить, почему это предупреждение выдается, если его решение нарушает мой сценарий?

+1

Какая версия Python вы используете? Несколько распаковки '*' не являются допустимым синтаксисом до 3.5 (см. [PEP-448] (https://www.python.org/dev/peps/pep-0448/)). – jonrsharpe

+0

3.5, edit made to question – ProgrammingWithRandy

+0

И это версия, используемая текущим интерпретатором проекта в PyCharm? И какая версия PyCharm? Я думаю, что полная поддержка 3.5 доступна только в PyCharm 5.x. – jonrsharpe

ответ

1

Возможно, PyCharm ожидает, что вы передадите один * args-список в функцию. Вы можете добавить x, y и i, прежде чем расширять их, и я думаю, что pycharm перестанет жаловаться.

cursor.execute(add_related_accounts_query.format(x[0], *(y+z+i)) 

Вы должны принять предупреждения о пичарме с солью. Это не всегда идеально. У него есть набор комментариев, которые вы можете разместить перед такими строками, чтобы заставить его игнорировать предупреждение.

Смежные вопросы