我试图真正理解这行python中发生的事情,让它将传入的数据拉到字符串而不是将其写入outfile。
ftp.retrlines("RETR " + filename, lambda s, w=outfile.write: w(s+"\n"))
看起来retrlines正在获取命令和回调 - 但是还有一个额外的第三个参数。它在做什么?
另外,我理解lambda如此处所解释的(看起来与javascript匿名函数回调非常相似)但是没有看到如何将其应用于这种情况,其中lamda s在第二个参数中定义Why are Python lambdas useful? < / p>
这个python代码中发生了太多不常见的事情。有人可以解释这一行中发生的事情。
答案 0 :(得分:6)
没有retrlines
函数的可选第三个参数,而是lambda的可选第二个参数。
retrlines
函数传递两个参数:
"RETR " + filename
和
lambda s, w=outfile.write: w(s+"\n")