Install Web App

Python Tambahan #23 Fungsi dalam Fungsi (Nested Function)

profil-penulis

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

Masuk Terlebih dahulu untuk berkomentar

Paling baru
Lihat Lainnya