2014-02-14 106 views
2

我想真正理解這一行python中發生了什麼,讓它將傳入的數據拉到一個字符串,而不是寫入outfile。什麼是lambda在這個python代碼中做什麼?

ftp.retrlines("RETR " + filename, lambda s, w=outfile.write: w(s+"\n")) 

看起來retrlines越來越命令和回調 - 但是還有一個額外的第三個參數。它在做什麼?

而且,據我瞭解lambda表達式如下解釋(這看起來非常相似的JavaScript匿名函數回調),但看不出如何適用於這種情況下,其中的λS是第二個參數定義Why are Python lambdas useful?

這個Python代碼中發生了太多不相似的事情。有人可以解釋這一行發生了什麼。

回答

6

不,沒有可選的retrlines函數的第三個參數,但是lambda的可選第二個參數。

retrlines函數會得到兩個參數:

"RETR " + filename 

lambda s, w=outfile.write: w(s+"\n")