Хорошо, так что в основном у меня этот код работает, но я не знаю почему. Я использую ftplib и retrbinary. Вот фрагмент кода:Python: функции Lambda и callback?
def download(self):
if not self.f:
print("Can't download..... Not connected to a host")
return
FILE = self.handle_command("download")
if FILE:
#try:
self.f.retrbinary("RETR %s" % FILE, lambda block: self.handle_download(block, FILE), 1024)
print("Downloaded '%s' to cwd" % FILE)
#except:
# print("Can't download '%s'" % FILE)
def handle_download(self, block, filename):
open(filename, 'wb').write(block)
print(".")
Мой вопрос: Почему в лямбда-функции в retrbinary я пишу «блок» после того, как лямбда (и перед двоеточием), но не «имя файла»?
В отличие от lambda: self.handle_download(block, FILE)
или ..... lambda block, filename: self.handle_download(block, FILE)
Надежда это ясно, спасибо