Один строковый аргумент рассматривается как несколько аргументовPython

Программы на Python
Ответить
Anonymous
 Один строковый аргумент рассматривается как несколько аргументов

Сообщение Anonymous »

Я новичок в Python и недавно работал над написанием скрипта Python для автоматизации игры через эмуляторы, и для этого я использовал многопоточность. Теперь я хотел внести некоторые изменения в функцию и внезапно получаю сообщение об ошибке из потока, что вместо требуемого 1 было передано 13 аргументов.
Исходный код выглядит следующим образом: :

Код: Выделить всё

def go_to_main_coords(device, main_coords):
click(device, (9, 908))
click(device, (9, 908))
go_to_coords(device, main_coords)

main_thread = threading.Thread(target=go_to_coords, args=(main_device, support_coords))
support_thread = threading.Thread(target=go_to_main_coords, args=(support_device, main_coords))
#Start threads
main_thread.start()
support_thread.start()

#going to coords
main_thread.join()
Это сработало отлично. Проблема начала проявляться после того, как я изменил функцию go_to_main_coords(), чтобы ускорить этот шаг, который вызывается довольно много раз.
После изменений соответствующий код выглядел следующим образом:

Код: Выделить всё

def go_to_main_coords(device):
click(device, (9, 908))
click(device, (9, 908))
click(device, (40, 820))
click(device, (260, 800))
click(device, (270, 400))

main_thread = threading.Thread(target=go_to_coords, args=(main_device, support_coords))
support_thread = threading.Thread(target=go_to_main_coords, args=(support_device))
# Start threads
main_thread.start()
support_thread.start()

# going to coords
main_thread.join()
При запуске версии скрипта я получаю следующее сообщение, как только код достигает этой части:

TypeError: go_to_main_coords() принимает 1 позиционный аргумент, но было задано 13

Почему я думаю, что эта проблема связана с самой строкой и ее обработкой потому что переменная support_device передается функции go_to_main_coords() — это строка типа «emulator-5564», которая соответствует точному количеству явно заданных «аргументов». Если программа продолжает работать, значение support_device в конечном итоге меняется на что-то вроде «localhost:5595», и в сообщении об ошибке сообщается, что было передано 14 аргументов, что снова соответствует количеству символов в строке.
Теперь у меня вопрос: почему функция работает с двумя аргументами, а не с одним? Я даже пытался запустить его, где go_to_main_coords() требует 2 аргумента, но второй просто игнорируется. Это тоже работает. Однако как только я удаляю второй аргумент как из вызова, так и из определения, эта ошибка продолжает выдаваться.

Подробнее здесь: https://stackoverflow.com/questions/792 ... -arguments
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»