Цикл срабатывает 117 раз вместо одного [закрыто]Python

Программы на Python
Ответить
Anonymous
 Цикл срабатывает 117 раз вместо одного [закрыто]

Сообщение Anonymous »

У меня есть этот метод:

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

    def apply_selected(self, paths: list[str], func):
print(paths)
for p in paths:
f = self._files.get(Path(p))
print("1")
if f:
print("2")
func(f)
И функция не применялась (не доходила до «2»).
В итоге я обнаружил, что она повторялась 117 раз. В путях только один элемент. Я знаю, потому что print(paths) напечатал путь к файлу один раз, а затем продолжил печатать 1 117 раз.
Вот полный стек вызовов:

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

add_thumbnail
был вызван, выглядит так:

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

    def add_thumbnail(self, files, thumbnail):
print("0")
print(files)
self.apply_selected(files, lambda f: f.add_cover_art(thumbnail))
затем он перешел к apply_selected (выше). Добавить_cover_art так и не удалось.
Вывод выглядит так:

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

0
filename
filename
1
1
1
1
1
... (112 more times)
Где я ошибся?
Изменить:
Я понял, я понимаю.
Вот self._files : self._files: dict[str, myFile] = {}
Я заменил print("1") на print(p), и думаю, "это очевидно".
print(p) выводит весь путь к файлу, по одному символу за раз.
Я забыл, что в Python создание параметра в виде списка абсолютно ничего не значит.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ad-of-once
Ответить

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

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

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

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

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