Python Tambahan #23 Fungsi dalam Fungsi (Nested Function)
Yuliance Ardies Ferry w.Yehohanan
22 April 2025
Python memperbolehkan kita mendefinisikan fungsi di dalam fungsi lain, yang disebut nested function. Teknik ini sangat berguna untuk:
Membatasi ruang lingkup fungsi bantu (helper)
Membuat kode lebih modular dan terstruktur
Mempersiapkan dasar untuk konsep closure dan decorator
Dengan nested function, kamu bisa menyembunyikan logika pendukung dari luar fungsi utama.
Contoh Nested Function Sederhana
def luar():
def dalam():
print("Halo dari dalam!")
dalam()
Ketika fungsi luar()
dipanggil, ia akan menjalankan fungsi dalam()
yang didefinisikan di dalamnya.
luar()
# Output: Halo dari dalam!
Akses Variabel dari Luar (Enclosing Scope)
Fungsi dalam bisa mengakses variabel yang didefinisikan di fungsi luar.
def halo(nama):
def sapa():
print(f"Halo, {nama}!")
sapa()
Mengembalikan Fungsi dari Fungsi (Closure)
Fungsi dalam bisa dikembalikan sebagai nilai dari fungsi luar — ini disebut closure.
def pembuat_pangkat(n):
def pangkat(x):
return x ** n
return pangkat
kuadrat = pembuat_pangkat(2)
print(kuadrat(5)) # Output: 25
Keuntungan Menggunakan Nested Function
✅ Privasi lokal – Fungsi dalam tidak bisa dipanggil dari luar
✅ Modularisasi – Memecah tugas-tugas kecil di dalam fungsi besar
✅ Reusable & fleksibel – Cocok sebagai dasar closure atau decorator
Kapan Harus Menghindari Nested Function?
🚫 Jangan gunakan nested function jika fungsi dalam perlu dipakai ulang di tempat lain.
🚫 Hindari nested function yang terlalu dalam — dapat membingungkan.
Studi Kasus: Validasi dan Proses
def proses_data(data):
def bersih(x):
return x.strip().lower()
return [bersih(d) for d in data]
Nested function memberikan kontrol lebih besar terhadap cakupan dan struktur kode. Dengan menempatkan fungsi bantu di dalam fungsi utama, kamu menjaga kode tetap rapih dan hanya menjalankan fungsi sesuai konteksnya. Teknik ini juga membuka jalan untuk konsep lanjutan seperti closure dan decorator.
Artikel Lainnya Dengan Kategori Terkait :
1. Python Tambahan #01 F-String: Format String Modern
2. Python Tambahan #02 Penulisan Panjang Kode di Dalam Fungsi
3. Python Tambahan #03 Komentar: Docstring dan Tanda #
4. Python Tambahan #04 Membuat List dari String atau Karakter
5. Python Tambahan #05 Perbedaan Positional dan Keyword Argument
6. Python Tambahan #06 Menggunakan Tanda *args dan **kwargs
7. Python Tambahan #07 Fungsi Bawaan: zip(), map(), dan filter()
8. Python Tambahan #08 Penggunaan any() dan all()
9. Python Tambahan #09 Fungsi enumerate() dalam Looping
10. Python Tambahan #10 Fungsi reversed() dan sorted()
11. Python Tambahan #11 Fungsi isinstance() dan id()
12. Python Tambahan #12 Pemrosesan String: replace(), strip(), split()
13. Python Tambahan #13 Menggabungkan String dengan join()
14. Python Tambahan #14 Mengatur Format Tampilan Angka dan Tanggal
15. Python Tambahan #15 Menggunakan Operator Ternary di Python
16. Python Tambahan #16 Destructuring: Unpacking List dan Tuple
17. Python Tambahan #17 Tuple Packing dan Unpacking
18. Python Tambahan #18 Dictionary Comprehension
19. Python Tambahan #19 Set Comprehension dan Operasi Dasarnya
20. Python Tambahan #20 List vs Generator: Apa Bedanya?
21. Python Tambahan #21 Fungsi Generator dengan yield
22. Python Tambahan #22 Menulis Fungsi Lambda yang Ringkas
23. Python Tambahan #23 Fungsi dalam Fungsi (Nested Function)
24. Python Tambahan #24 Fungsi sebagai Argumen dan Return
25. Python Tambahan #25 Pemrosesan File Teks: with open()
26. Python Tambahan #26 Membaca dan Menulis File JSON di Python
27. Python Tambahan #27 Format CSV: Membaca dan Menulis File CSV