Вот функция (спасибо пользователю Abbot, за предоставление его в другом вопросе)
def traverse(ftp):
level = {}
for entry in (path for path in ftp.nlst() if path not in ('.', '..')):
ftp.cwd(entry)
level[entry] = traverse(ftp)
ftp.cwd('..')
return level
Вот что я не понимаю: когда python входит в функцию, он создает пустой словарь (level
). В цикле for он сохраняет имя каталога в качестве ключа в словаре. Что касается значения этого ключа, python снова входит в функцию и ищет каталог, и он становится значением этого ключа.
Но как словарь уровней запоминает значения внутри? Я имею в виду, не следует ли его сбрасывать / очищать каждый раз, когда питон входит в функцию?