Fungsi adalah blok langkah yang diberi nama
Setiap kali kamu menulis beberapa baris yang sama lebih dari sekali, atau ingin memberi nama pada sepotong kecil logika, kamu sudah siap menulis fungsi. Fungsi adalah alat sungguhan pertama untuk mengelola kerumitan di program Python.
Bentuk dasarnya:
Penjelasannya:
defadalah kata kunci yang memulai definisi fungsi.greetadalah nama fungsinya.(name)adalah daftar parameter, yaitu input yang diterima fungsi.- Titik dua mengakhiri bagian kepala; blok yang diindentasi di bawahnya adalah badan fungsi.
greet("Ada")adalah sebuah pemanggilan. Python menjalankan badan fungsi dengannamediikat ke"Ada".
Fungsi diam saja sampai dipanggil. Mendefinisikannya tidak menjalankannya. Memanggilnya dengan greet("Ada") yang menjalankannya.
Parameter dan argumen
Kata parameter adalah nama di dalam definisi fungsi. Kata argumen adalah nilai yang dikirimkan saat kamu memanggilnya. Dalam obrolan santai ini tidak terlalu penting, tapi perbedaannya membantu saat membaca pesan error.
Di sini base dan exponent adalah parameter. 2 dan 10 adalah argumen. Python mengikatnya sesuai urutan: argumen pertama ke parameter pertama, dan seterusnya.
return: mengirim nilai kembali
print menulis ke layar. return menyerahkan sebuah nilai kembali ke pemanggil agar bisa dipakai:
Tanpa return, fungsi mengembalikan None secara default:
return juga langsung mengakhiri fungsi. Kamu akan sering melihat return lebih awal dipakai untuk keluar dari kasus khusus sebelum logika utama:
Return lebih awal menjaga badan utama agar tidak bersarang terlalu dalam di if/else.
Argumen default
Sebuah parameter bisa punya nilai default, yang dipakai saat pemanggil tidak memberikannya:
Semua parameter dengan nilai default harus ditulis setelah parameter tanpa default. def f(a, b=1, c): adalah syntax error.
Jebakan nilai default yang mutable
Ini jebakan Python yang paling terkenal. Perhatikan:
Kamu mungkin mengira setiap pemanggilan dimulai dengan list kosong. Ternyata list default itu dipakai bersama di semua pemanggilan, dan item-itemnya menumpuk. Python mengevaluasi nilai default sekali, saat fungsi didefinisikan, lalu memakai list yang sama itu selamanya.
Pola yang aman adalah memakai None sebagai default dan membuat list-nya di dalam fungsi:
Sekarang setiap pemanggilan yang tidak mengirim items mendapat list baru. Aturan ini berlaku untuk list, dict, set, apa pun yang mutable.
Argumen keyword
Kamu bisa mengirim argumen berdasarkan nama, bukan posisi. Dengan begitu kamu bisa melewatkan parameter di tengah dan membuat pemanggilan yang panjang lebih mudah dibaca:
Argumen posisional dan keyword boleh dicampur, tapi yang posisional harus lebih dulu:
Begitu sebuah fungsi punya lebih dari tiga atau empat parameter, mengutamakan argumen keyword membuat pemanggilannya jauh lebih mudah dibaca.
Parameter positional-only dan keyword-only
Python memungkinkan kamu menandai beberapa parameter agar hanya bisa diisi berdasarkan posisi (dengan /) atau hanya berdasarkan keyword (dengan *):
Kamu belum butuh ini di hari pertama. Fitur ini berguna saat merancang API dan ingin mengunci cara pemanggil memakai fungsimu.
Docstring dan penamaan
Baris pertama di dalam fungsi bisa berupa docstring, yaitu string dengan tiga tanda kutip yang diperlakukan Python sebagai dokumentasi:
Alat seperti help(), tooltip di IDE, dan generator dokumentasi membaca docstring secara otomatis. Satu baris saja jauh lebih baik daripada tidak ada.
Dan tolong, pikirkan penamaan:
- Nama fungsi sebaiknya berupa kata kerja:
fetch_profile,compute_total,is_valid. - Pakai
lower_snake_case. - Fungsi yang mengembalikan boolean sering diawali
is_,has_, ataucan_.
Nama yang bagus membuat tempat pemanggilannya jelas dengan sendirinya tanpa perlu komentar.
Pure function lebih mudah dipahami
Fungsi pure mengembalikan output yang sama untuk input yang sama dan tidak punya efek samping: ia tidak mengubah state global, tidak mencetak ke stdout (kecuali untuk debugging), dan tidak menulis ke file.
Keduanya punya tempat masing-masing, tapi untuk kode yang ingin kamu pakai ulang dan uji, usahakan sebanyak mungkin memakai pure function.
Contoh kecil yang berjalan
Fungsi singkat yang menggabungkan nilai default, argumen keyword, dan return:
Berikutnya: daftar argumen yang fleksibel
Kadang kamu tidak tahu berapa banyak argumen yang akan dipakai untuk memanggil sebuah fungsi, atau kamu ingin meneruskan argumen apa pun yang datang ke fungsi lain. *args dan **kwargs menangani hal itu. Itulah halaman berikutnya.
Pertanyaan yang sering diajukan
Bagaimana cara mendefinisikan fungsi di Python?
Pakai kata kunci def, diikuti nama fungsi, tanda kurung untuk parameter, dan titik dua. Blok yang diindentasi di bawahnya adalah badan fungsi. Contoh: def greet(name): print(f'Hi, {name}').
Apa yang dilakukan return di Python?
return mengirim sebuah nilai kembali ke pemanggil fungsi. Fungsi tanpa return eksplisit otomatis mengembalikan None. Begitu return berjalan, fungsi langsung selesai, dan kode apa pun setelahnya di blok yang sama dilewati.
Apa itu argumen default di Python?
Argumen default membuat sebuah parameter punya nilai bawaan yang dipakai kalau pemanggil tidak memberikannya. def greet(name='friend'): berarti greet() tanpa argumen memakai 'friend'. Jangan pernah memakai nilai default mutable seperti []; lihat pola yang lebih aman di bawah.