Fungsi yang Rapi · Pelajaran 1 dari 11
Fungsi, parameter, dan nilai kembali
9 menit baca · BelajarCode
Fungsi yang baik mengerjakan satu hal dengan jelas: menerima masukan lewat parameter, lalu mengembalikan hasil lewat return. Fungsi seperti ini mudah diuji dan dipakai ulang.
Argumen posisi dan argumen kata kunci
1def kartu_ujian(nama, kelas, ruang="Aula"):2 return f"{nama} ({kelas}) ujian di {ruang}"34print(kartu_ujian("Rani", "XI-2"))5print(kartu_ujian("Bima", "X-1", "Lab Komputer"))6print(kartu_ujian(kelas="XII-3", nama="Sari", ruang="R.12"))Rani (XI-2) ujian di Aula Bima (X-1) ujian di Lab Komputer Sari (XII-3) ujian di R.12
- Argumen posisi dipasangkan sesuai urutan parameter.
- Argumen kata kunci menyebut nama parameternya, jadi urutannya bebas.
- Parameter dengan nilai bawaan (
ruang="Aula") boleh tidak diisi. Parameter bernilai bawaan harus ditulis setelah parameter tanpa nilai bawaan.
Mengembalikan lebih dari satu nilai
Python mengizinkan return beberapa nilai sekaligus. Sebenarnya nilai-nilai itu dibungkus menjadi satu tuple, lalu bisa dibongkar ke beberapa variabel.
1def ringkasan(data):2 """Mengembalikan nilai terkecil, terbesar, dan rata-rata dari data."""3 return min(data), max(data), sum(data) / len(data)45terkecil, terbesar, rata = ringkasan([78, 92, 65, 88])6print(terkecil, terbesar, rata)7print(ringkasan.__doc__)65 92 80.75 Mengembalikan nilai terkecil, terbesar, dan rata-rata dari data.
Teks bertanda kutip tiga di baris pertama fungsi disebut docstring. Docstring menjelaskan kegunaan fungsi dan bisa dibaca lewat __doc__ atau help().
Petunjuk tipe
Kamu bisa menambahkan petunjuk tipe (type hint) supaya maksud fungsi lebih jelas. Python tidak memaksakannya saat program berjalan, tetapi editor kode memakainya untuk memberi peringatan.
1def luas_lingkaran(r: float) -> float:2 return 3.14159 * r * r34print(round(luas_lingkaran(10), 2))314.16
Jumlah argumen yang bebas
Tanda bintang * pada parameter menampung argumen sebanyak apa pun ke dalam sebuah tuple.
1def jumlahkan(*angka):2 total = 03 for a in angka:4 total += a5 return total67print(jumlahkan(1, 2))8print(jumlahkan(5, 10, 15, 20))3 50
Cek pemahaman
Pemanggilan mana yang menyebabkan error untuk fungsi def f(a, b=2):?
Latihan
Konversi waktu
Buat fungsi pecah_detik(total) yang mengembalikan tiga nilai: jam, menit, dan detik. Tambahkan docstring. Uji dengan 3725 dan 86399.
Pembahasan
1def pecah_detik(total):2 """Memecah total detik menjadi (jam, menit, detik)."""3 jam = total // 36004 menit = total % 3600 // 605 detik = total % 606 return jam, menit, detik78for t in [3725, 86399]:9 j, m, d = pecah_detik(t)10 print(f"{t} detik = {j} jam {m} menit {d} detik")3725 detik = 1 jam 2 menit 5 detik 86399 detik = 23 jam 59 menit 59 detik
Operator % dan // dikerjakan dari kiri ke kanan, jadi total % 3600 // 60 berarti sisa detik setelah jam dibuang, lalu dibagi 60.
Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.