Kursus Pengembangan Python Lanjutan
Bab
>
Tingkat
Fungsi Lanjutan
Fungsi Lambda
Objective
Gunakan fungsi lambda untuk mendokumentasikan beberapa barang yang dapat dikonsumsi sehingga nantinya dapat dikumpulkan untuk pengiriman.
Beberapa buah dan beri di kebun hampir siap dipetik sehingga bisa disimpan, dikirim, dan dijual. Akan sangat membantu untuk mencatat item-item yang hampir siap sehingga Anda memiliki perkiraan berapa banyak produk dari kebun ini yang sedang dikemas dan dikirim.
Untuk mengoptimalkan kode Anda, Anda dapat menggunakan fungsi lambda, ini adalah cara lain untuk membuat fungsi kustom, tetapi lebih cepat ketika fungsi yang Anda buat lebih sederhana.
# Normal Custom Function
def calculate(x , y , z) :
return( (x+y+z) *2 )
# Lambda Function
calculate = lambda x,y,z : (x + y + z) * 2
Dalam contoh di atas, Anda memiliki dua fungsi, sebuah fungsi kustom dan sebuah fungsi lambda. Meskipun ditulis berbeda, mereka secara fungsional sama, fungsi lambda hanya saja lebih mudah digunakan dan dapat disiapkan dengan cepat di tengah-tengah kode. Namun demikian, metode normal mendefinisikan fungsi masih sangat berguna untuk urutan kode yang kompleks.
Terdapat dua (2) jenis item yang dapat dikategorikan di kebun: "fruits" dan "berries". Dari kedua (2) jenis tersebut, terdapat tiga (3) buah: apples, pears dan oranges; dan terdapat tiga (3) beri: red, blue dan purple.
Pertama, siapkan fungsi lambda yang diilustrasikan di atas bernama calculate, ini akan memungkinkan kita untuk mendapatkan jumlah item yang diprediksi untuk musim ini dengan menjumlahkan tiga item, dan mengalikannya dengan dua (2). Buat fungsi lambda lainnya bernama estimate untuk memperkirakan item yang akan dikumpulkan, sebagai fungsi bicara kustom. Terakhir, siapkan fungsi lambda bernama total yang menjumlahkan dua nilai bersama-sama dan mengurangi nilai ketiga bernama loss.
# Calculate items calculate = lambda x,y,z : (x + y + z) * 2 # Estimate items estimate = lambda number , name : player.speak( "I estimate %d %s this season" % (number,name) ) # Total all items total = lambda num1, num2, loss : ( (num1 + num2) - loss)
Buat variabel untuk masing-masing dari tiga (3) buah, dan tambahkan jumlah dari masing-masing buah yang ada di kebun. Berjalanlah ke tanda X gelap dan gunakan fungsi lambda calculate() dengan ketiga variabel buah tersebut, dan simpan nilainya dalam variabel kustom bernama fruit_number, seperti ini: fruit_number = calculate(orange,pear,apple). Lanjutkan dengan menggunakan fungsi lambda estimate() menggunakan fruit_number sebagai angka, dan "fruits" sebagai nama, seperti ini: estimate(fruit_number, "fruits" ).
Setelah selesai dengan buah, berjalanlah ke tanda X terang dan lakukan hal yang sama dengan beri. Siapkan variabel untuk tiga (3) beri dengan jumlah semak yang Anda hitung di kebun, kemudian siapkan fungsi lambda dengan cara yang sama seperti Anda lakukan dengan buah, seperti ini: berry_number = calculate(red,blue,purple). Gunakan fungsi lambda estimate dengan berry_number dan "berries" sebagai argumennya.
Terdapat sebuah konstanta bernama doc yang memuat perkiraan bulan lalu untuk produk yang hilang. Lanjutkan ke gudang, berjalanlah ke tanda X emas dan gunakan fungsi speak() dengan konstanta tersebut untuk membaca dokumen di atas meja sehingga Anda dapat menentukan angka bulan lalu.
Setelah angka bulan lalu diketahui, berjalanlah ke tanda X gelap di atas karpet ungu, hadap meja supaya Anda dapat menentukan total untuk bulan ini. Buat sebuah variabel bernama season untuk menghitung total musim ini, gunakan fruit_number dan berry_number sebagai angkanya, dan gunakan angka yang Anda tentukan dari konstanta doc sebagai argumen loss, seperti ini: season = total(berry_number,fruit_number, number found in doc constant)
Lanjutkan dengan menggunakan fungsi lambda estimate() menggunakan variabel season sebagai argumen angka dan "products" sebagai argumen nama untuk menyelesaikan level.