python - Need help understanding how this recursive function is working -
Here is a function (credit to user abot, to provide it in another question)
Diff Transgress (FTP): level = {} entry (for path in path) in ftp.nlst () if the path is not ('.', '..')): ftp.cwd (entry) Level [entry] = reverse level This is what I do not understand: When the python enters the function, it creates an empty dictionary ( level ). For loop, it stores a directory name in the dictionary as a key, for the value of that key, the dragon enters the function again and searches for a directory and it becomes the value of that key .
But, how do you remember the values within the levels? I mean, it should not be reset / empty every time Pygm enters the function?
Each "instance" of the function has its own copy of level and There is no side effect between different codes of level .
Take this folder tree:
root `-home | - lyrae | | - ftp.py | When you call ftp to Route then : : <<> FTP (root) creates a blank level ftp ( Root) Calculates the subfolders (home) . FTP (root) first selects the subfolder and changes the directory in it. set level [home] for the result of ftp in the current folder.
-
FTP (Home) creates an empty level dictionary -
Ftp (home) subfolders enumerates: -
FTP (Home) first selects the subfolder and changes the directory in it. -
ftp < FTP (Lira) creates a blank level dictionary
-
FP (Lira) calculates subfolders: () . -
ftp (lyrae) is out of the subfolder for parsing and return level . -
ftp (home) completes the assignment: level = {'lyrae': {}} -
FTP (home) changes to the next folder. -
FTP (home) set level [badp] for the result of ftp in the current code.
-
ftp (<< Code> level -
ftp (badp) calculates the subfolder : () . / li> -
FTP (badp) is out of the subfolder for the pars and return level . - >> completes the FTP (home)
assignment: level = {'lirai': {}, 'badp': { }} level -
FTPis out of the subfolder for parsing and returning assigns Nt:level = {'home': {'lyrae': {}, 'badp ': {}}} -
ftp (root)levelis out of the subfolder for parsing and returning.
Comments
Post a Comment