Function
Membuat function dengan def, parameter, return, dan docstring.
Mengapa function?
Function membungkus langkah-langkah dengan nama sehingga bisa dipakai berulang, diuji, dan dipahami. Prinsip DRY: Don't Repeat Yourself.
Mendefinisikan dan memanggil
def sapa(nama):
print("Halo,", nama)
sapa("Dina") # Halo, Dina
Format: def nama_function(parameter): lalu isi yang menjorok.
return: mengembalikan nilai
def tambah(a, b):
return a + b
hasil = tambah(2, 3) # 5
return mengirim nilai keluar dan langsung menghentikan function. Function tanpa return mengembalikan None.
print vs return
Pemula sering tertukar:
print()hanya menampilkan ke layar; nilainya tidak bisa dipakai lagi.returnmengirim nilai ke pemanggil sehingga bisa disimpan atau dihitung lebih lanjut.
def kuadrat_cetak(n): print(n * n)
def kuadrat(n): return n * n
x = kuadrat(4) + 1 # 17 ✔
y = kuadrat_cetak(4) + 1 # TypeError: None + 1
Mengembalikan banyak nilai
Sebenarnya mengembalikan satu tuple:
def statistik(angka):
return min(angka), max(angka), sum(angka) / len(angka)
terkecil, terbesar, rata = statistik([3, 9, 6])
Docstring: dokumentasi function
def luas_persegi_panjang(p, l):
"""Mengembalikan luas persegi panjang berukuran p x l."""
return p * l
help(luas_persegi_panjang)
Teks di antara tanda kutip tiga pada baris pertama disebut docstring dan dibaca oleh help() serta editor.
Function memanggil function
def is_genap(n):
return n % 2 == 0
def hitung_genap(daftar):
return len([n for n in daftar if is_genap(n)])
Pecah masalah besar menjadi function kecil yang masing-masing mengerjakan satu hal.
Argumen disalin... sebagian
- Angka, string, tuple (immutable): perubahan di dalam function tidak memengaruhi variable asli.
- List/dict (mutable): function menerima referensi ke objek yang sama, jadi perubahannya terlihat di luar.
def tambah_satu(daftar):
daftar.append(1) # mengubah list asli!
Jika tidak ingin mengubah aslinya, buat salinan atau kembalikan list baru.
Rekursi (sekilas)
Function boleh memanggil dirinya sendiri:
def faktorial(n):
if n <= 1:
return 1
return n * faktorial(n - 1)
Harus ada kasus dasar (n <= 1) agar rekursi berhenti.
Panduan gaya
Nama function snake_case berupa kata kerja (hitung_total, cari_user), pendek, dan jelas. Jaga agar function tidak terlalu panjang.