這裏是一個函數(信用卡用戶住持,在另一個問題提供它)需要幫助理解這個遞歸函數是如何工作的
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
這就是我不明白:當蟒蛇進入功能,它創建一個空字典(level
)。在for循環中,它將目錄名稱作爲密鑰存儲在字典中。至於那個鍵的值,python再次輸入函數並搜索一個目錄,它就成爲該鍵的值。
但是,級別字典如何記住裏面的值?我的意思是,每當python進入函數時,它不應該被重置/清空嗎?
所以只有當它'返回級別'這是否返回字典成爲父級的水平[條目]的值,是否正確? – sqram 2009-12-07 14:24:26
這是正確的。 – badp 2009-12-07 14:30:57
一個問題:(假設DIRB是DIRA dirB1和dirB2內部DIRB內)。在for循環,它抓住了DIRA目錄列表(返回DIRB)。然後進入dirB並找到dirB1和dirB2。它進入dirB1內部,找不到任何東西並返回到dirB。它現在進入dirB2。但是它怎麼知道進入dirB2?它會掃描dirB1並返回後DIRB,for循環將返回dirB1和dirB2。爲什麼不再進入dirB1? – sqram 2009-12-07 15:52:08