Kursus Pembangunan Python Lanjutan
Bab
>
Tahap
Fungsi Lanjutan
Penutupan
Objektif
Atur bekalan air di ladang dengan menyediakan dan menggunakan closures.
Terdapat empat tangki air yang direka untuk mengairi ladang sekeliling, sudah tiba masanya mereka disusun semula untuk memastikan jumlah air yang betul diagihkan ke tempat yang sesuai. Untuk melakukan ini, kita boleh memudahkan kerja dengan menggunakan Closures.
Closures adalah fungsi bersarang yang direka untuk mengenkapsulasi data, ini mengurangkan jumlah pemboleh ubah yang perlu anda gunakan dan menyembunyikan data dalam fungsi supaya ia tidak boleh dimanipulasi dari luar, dalam erti kata lain, menutup fungsi tersebut.
Untuk mengawal air dalam tangki, kita akan mencipta fungsi bersarang yang berfungsi sebagai pengganda. Fungsi ini berfungsi dengan cara yang sama seperti gelung, fungsi luar yang dinamakan multiplier_of() mempunyai argumen yang didarabkan dengan argumen fungsi dalamnya yang dinamakan multiplier().
# Nested Function
def multiplier_of(n):
def multiplier(number):
return number*n
return multiplier
Setelah disediakan, kita perlu menutup fungsi dengan menyediakan closures, ini menghalang akses kepada nilainya dan mengukuhkan penggunaannya.
# Set up Closure that multiplies any number by 2 multiply_by_2 = multiplier_of(2) # Uses closure to display a number on screen player.speak( multiply_by_2(4) ) # The number displayed is 8, the formula is [2 x 4 = 8]
Closure di atas dinamakan multiply_by_2() dan menggunakan fungsi bersarang yang kita cipta dengan argumen yang ditetapkan, iaitu 2, yang merupakan nombor yang closure ini tetapkan untuk didarabkan. Akibatnya, apa-apa nombor yang kita tambah sebagai argumen akan didarabkan dengan dua (2) dan atribut ini tidak boleh diubah kerana ia telah ditutup.
Meneruskan untuk mengawal tangki air, sediakan tiga (3) closures: multiply_by_2, multiply_by_3 dan multiply_by_5. Tetapkan setiap satu secara manual menggunakan format yang sama seperti contoh yang diberikan sebelum ini, seperti ini: multiply_by_2 = multiplier_of(2).
Terdapat satu konstanta kamus dalam tahap ini yang dinamakan tanks, sebagai indeks ia menyimpan enam (6) warna: `“red