Setelah membaca semua yang dapat saya temukan di lambda, saya masih tidak mengerti bagaimana membuatnya melakukan apa yang saya inginkan.
Setiap orang menggunakan contoh:
lambda x, y : x + y
Mengapa Anda perlu menyatakan keduanya x
dan y
sebelum :
? Juga bagaimana Anda membuatnya mengembalikan banyak argumen?
sebagai contoh:
self.buttonAdd_1 = Button(self, text='+', command=lambda : self.calculate(self.buttonOut_1.grid_info(), 1))
Ini bekerja dengan baik. Tetapi kode berikut tidak:
self.entry_1.bind("<Return>", lambda : self.calculate(self.buttonOut_1.grid_info(), 1))
Ini menghasilkan kesalahan:
TypeError: () tidak mengambil argumen (1 diberikan)
sumber
(train["pred_idx_cos"],train["target"]).apply(lambda x,y: get_result(x, y))
dan tampaknya tidak berhasil. Tolong, selamatkan jiwaku dari kabut program proseduralSaya yakin bind selalu mencoba mengirim parameter peristiwa. Mencoba:
self.entry_1.bind("<Return>", lambda event: self.calculate(self.buttonOut_1.grid_info(), 1))
Anda menerima parameter dan tidak pernah menggunakannya.
sumber
Karena ini adalah definisi fungsi dan perlu mengetahui parameter apa yang diterima fungsi tersebut, dan dalam urutan apa. Itu tidak bisa hanya melihat ekspresi dan menggunakan nama variabel di dalamnya, karena beberapa dari nama itu Anda mungkin ingin menggunakan nilai variabel lokal atau global yang ada, dan bahkan jika itu dilakukan, ia tidak akan tahu apa urutannya. harus mengharapkan untuk mendapatkannya.
Pesan kesalahan Anda berarti bahwa Tk memanggil lambda Anda dengan satu argumen, sedangkan lambda Anda ditulis untuk tidak menerima argumen. Jika Anda tidak membutuhkan argumen, terima saja dan jangan gunakan. ( Demosthenex memiliki kodenya , saya akan mempostingnya tetapi dipukuli untuk itu.)
sumber
Anda sebenarnya dalam beberapa situasi (ketika Anda hanya memiliki satu argumen) jangan meletakkan x dan y sebelum ":".
>>> flist = [] >>> for i in range(3): ... flist.append(lambda : i)
tapi aku di lambda akan terikat oleh nama, jadi,
>>> flist[0]() 2 >>> flist[2]() 2 >>>
berbeda dari yang mungkin Anda inginkan.
sumber