Исходный код выглядит следующим образом: :
Код: Выделить всё
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()
После изменений соответствующий код выглядел следующим образом:
Код: Выделить всё
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
Мобильная версия