Voici une fonction (merci à l'utilisateur Abbot, qui l'a fournie dans une autre question)
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
Voici ce que je ne comprends pas : Lorsque python entre dans la fonction, il crée un dictionnaire vide ( level
). Dans la boucle for, il stocke un nom de répertoire comme clé dans le dictionnaire. Pour ce qui est de la valeur de cette clé, Python entre à nouveau dans la fonction et recherche un répertoire qui devient la valeur de cette clé.
Mais comment le dictionnaire de niveau se souvient-il des valeurs qu'il contient ? Je veux dire, ne devrait-il pas être réinitialisé/vidé à chaque fois que Python entre dans la fonction ?