Python - Penutup: Panduan untuk Pemula
Hai di sana, pemrogram Python yang berhasrat! Hari ini, kita akan melakukan perjalanan yang menarik ke dunia penutup. Jangan khawatir jika anda belum pernah mendengar istilah ini sebelumnya – pada akhir tutorial ini, anda tidak hanya akan memahami apa itu penutup tetapi juga akan dapat untuk membuat dan menggunakannya di atas kod anda sendiri. Jadi, mari kita melompat!
Apa itu Penutup?
Bayangkan anda memiliki rakit penyimpanan yang dapat mengingati hal-hal walaupun anda menutupnya. Itu hampir seperti apa itu penutup dalam pemrograman! Dalam Python, penutup adalah objek fungsi yang dapat mengingati nilai-nilai di atas lingkungan penyekat walaupun mereka tidak hadir di atas memori.
Terlalu pengubahan? Mari kita pecahkan:
- Itu adalah fungsi di atas fungsi lain.
- Itu dapat mengakses variabel dari fungsi luar.
- Itu mengingati variabel ini walaupun fungsi luar telah selesai melakukan.
Pikirkan tentang itu sebagai cara untuk membuat paket kecil fungsionalitas yang membawa data pribadi nya sendiri di atas ia. Keren, kan?
Fungsi Berlapis
Sebelum kita kubur lebih dalam ke penutup, mari kita bercakap tentang fungsi berlapis. Ini adalah hanya fungsi yang ditakrifkan di atas fungsi lain. Ini contoh yang simpel:
def fungsi_luar(x):
def fungsi_dalam(y):
return x + y
return fungsi_dalam
hasil = fungsi_luar(10)
print(hasil(5)) # Output: 15
Dalam contoh ini, fungsi_dalam
adalah berlapis di atas fungsi_luar
. Fungsi dalam dapat mengakses parameter x
dari fungsi luar. Ini adalah konsep utama untuk memahami penutup.
Lingkungan Variabel
Untuk benar-benar memahami penutup, kita perlu memahami lingkungan variabel di Python. Ada tiga jenis lingkungan:
- Lingkungan lokal: Variabel yang ditakrifkan di atas fungsi
- Lingkungan penyekat: Variabel di atas fungsi luar fungsi berlapis
- Lingkungan global: Variabel yang ditakrifkan di atas level modul
Ini contoh untuk mengilustrasikan:
x = "Saya global!" # Lingkungan global
def luar():
y = "Saya dari luar!" # Lingkungan penyekat
def dalam():
z = "Saya lokal!" # Lingkungan lokal
print(x, y, z)
dalam()
luar()
Ketika anda menjalankan kod ini, anda akan melihat semua tiga variabel dicetak. Fungsi dalam
dapat mengakses variabel dari semua tiga lingkungan!
Membuat Penutup
Sekarang bahwa kita memahami fungsi berlapis dan lingkungan variabel, mari kita membuat penutup. Penutup terjadi ketika fungsi di dalam mengacu kepada nilai di atas lingkungan penyekat nya. Ini contoh:
def kalikan_dengan(n):
def pengkalibrator(x):
return x * n
return pengkalibrator
kali_dua = kalikan_dengan(2)
kali_tiga = kalikan_dengan(3)
print(kali_dua(5)) # Output: 10
print(kali_tiga(5)) # Output: 15
Dalam contoh ini, kalikan_dengan
adalah fungsi luar kami, dan pengkalibrator
adalah fungsi dalam kami. Magik terjadi ketika kita kembali pengkalibrator
- itu mengingati nilai n
walaupun kalikan_dengan
telah selesai melakukan. Ini adalah penutup!
Mari kita pecahkan langkah demi langkah:
- Kita takrifkan
kalikan_dengan
yang mengambil parametern
. - Di atas
kalikan_dengan
, kita takrifkanpengkalibrator
yang mengambil parameterx
. -
pengkalibrator
menggunakan keduax
(parameter nya sendiri) dann
(dari fungsi luar). - Kita kembali
pengkalibrator
darikalikan_dengan
. - Ketika kita panggil
kalikan_dengan(2)
, itu kembali fungsi yang selalu mengkalikan masukan nya dengan 2. - Secara serupa,
kalikan_dengan(3)
kembali fungsi yang selalu mengkalikan masukan nya dengan 3.
Ini adalah kekuatan penutup - mereka dapat membuat fungsi khusus atas saat!
Kata Kunci nonlocal
Kadang-kadang, anda mungkin ingin mengubah variabel dari lingkungan penyekat di atas fungsi dalam anda. Python menyediakan kata kunci nonlocal
untuk tujuan ini. Ini contoh:
def penghitung():
count = 0
def tambahkan():
nonlocal count
count += 1
return count
return tambahkan
penghitung_saya = penghitung()
print(penghitung_saya()) # Output: 1
print(penghitung_saya()) # Output: 2
print(penghitung_saya()) # Output: 3
Dalam contoh ini, tambahkan
adalah penutup yang mengingati dan mengubah variabel count
dari lingkungan penyekat nya. Kata kunci nonlocal
memberitahu Python bahwa count
bukan variabel lokal, tetapi satu dari lingkungan penyekat.
Penggunaan Praktis Penutup
Penutup tidak hanya trik keren - mereka memiliki aplikasi praktis! Berikut beberapa:
- Penyembunyian data dan wadah
- Membuat pabrik fungsi
- Mengimplementasikan dekorator
Mari lihat contoh dunia nyata. Bayangkan anda membuat sistem diskon untuk toko online:
def buat_penyesuaian_harga(diskon):
def sesuaikan_harga(harga):
return harga * (1 - diskon)
return sesuaikan_harga
jual_beli_raya = buat_penyesuaian_harga(0.2) # 20% potongan
jual_beli_komputer = buat_penyesuaian_harga(0.15) # 15% potongan
harga_asli = 100
print(f"Harga Jual Beli Raya: ${jual_beli_raya(harga_asli)}")
print(f"Harga Jual Beli Komputer: ${jual_beli_komputer(harga_asli)}")
Kod ini membuat fungsi harga yang berbeda untuk acara penjualan yang berbeda, semua menggunakan fungsi dasar yang sama. Itu adalah kekuatan penutup!
Ringkasan
Selamat! Anda baru saja belajar tentang salah satu fitur lanjutan Python. Mari kita ulang apa yang kita pelajari:
Konsep | Keterangan |
---|---|
Penutup | Fungsi yang mengingati nilai-nilai di atas lingkungan penyekat |
Fungsi Berlapis | Fungsi yang ditakrifkan di atas fungsi lain |
Lingkungan Variabel | Kenampakan variabel (lokal, penyekat, global) |
nonlocal |
Kata kunci untuk mengubah variabel di atas lingkungan penyekat |
Ingat, seperti setiap alat yang kuat, penutup harus digunakan dengan bijaksana. Mereka hebat untuk tugas tertentu, tetapi penggunaannya berlebihan dapat membuat kod anda lebih sulit untuk dipahami. Latihan, eksperimen, dan segera anda akan menggunakan penutup seperti pro Python!
Selamat coding, dan ingat - di Python, seperti dalam kehidupan, itu apa yang di atas dalam (fungsi) yang penting!
Credits: Image by storyset