Pada pertemuan ini kita akan membahas tentang fungsi pada python, jenis-jenisnya, dan juga contoh cara penggunaannya.
Sebelum mulai ngoding, kita bahas pengertiannya terlebih dahulu.
Pengertian Fungsi (def) Pada Python
Apa itu fungsi (def) pada python?
Fungsi pada python adalah kumpulan perintah atau baris kode yang dikelompokkan menjadi satu kesatuan untuk kemudian bisa dipanggil atau digunakan berkali-kali.
Sebuah fungsi bisa menerima parameter, bisa mengembalikan suatu nilai, dan bisa dipanggil berkali-kali secara independen.
Dengan fungsi kita bisa memecah program besar yang kita tulis, menjadi bagian-bagian kecil dengan tugasnya masing-masing.
Juga, fungsi akan membuat kode program kita menjadi lebih “reusable” dan lebih terstruktur.
Sintaks Fungsi
Di dalam python, sintaks pembuatan fungsi terlihat seperti berikut:
def <nama_fungsi>(parameters):
statements
Sintaks di atas secara umum terbagi menjadi 4 bagian:
- Kata kunci
def
yang menjadi pertanda bahwa blok kode program adalah sebuah fungsi - Nama fungsi yang kita buat
- Parameters yang akan diterima oleh fungsi yang kita buat (tidak wajib)
- Dan blok kode fungsi yang di sana akan kita tulis perintah-perintah yang harus dilakukan oleh sebuah fungsi
Oiya: jangan lupa bahwa blok kode program di dalam python didefinisikan dengan indentasi. Silakan baca aturan sintaks python untuk lebih lengkapnya.
Contoh sebuah fungsi sederhana dengan nama halo_dunia()
:
def halo_dunia():
print('Halo python! Halo dunia!')
Fungsi di atas, jika dipanggil, akan mengeksekusi perintah print()
yang ada di dalamnya.
Memanggil Fungsi
Bagaimana cara memanggil fungsi yang telah kita definisikan?
Sederhana.
Cukup ketik nama fungsinya, ditambah dengan tanda kurung ()
seperti berikut:
halo_dunia()
Output:
Halo python! Halo dunia
Bahkan kita bisa memanggil fungsi halo_dunia()
berkali-kali:
halo_dunia()
halo_dunia()
halo_dunia()
Output:
Halo python! Halo dunia
Halo python! Halo dunia
Halo python! Halo dunia
Fungsi dengan Argumen atau Parameter
Sebuah fungsi juga bisa menerima parameter atau pun argumen. Ia merupakan suatu nilai/variabel yang dilemparkan ke dalam fungsi untuk diproses lebih lanjut.
Sebagai contoh, perhatikan output berikut:
Halo Nurul, selamat datang!
Halo Lendis, selamat datang!
Halo Fabri, selamat datang!
Halo Isa, selamat datang!
Lalu, bagaimana cara kita memproduksi output seperti itu dengan python?
Ada banyak cara. Bisa dengan list, perulangan, dan lain sebagainya.
Akan tetapi, mungkin yang langsung terbesit dalam benak kita adalah dengan melakukan 4x print()
seperti ini:
print('Halo Nurul, selamat datang!')
print('Halo Lendis, selamat datang!')
print('Halo Fabri, selamat datang!')
print('Halo Isa, selamat datang!')
Itu adalah cara yang sangat simpel, dan juga tidak salah.
Akan tetapi, dari pada kita melakukan 4x print seperti di atas, kita bisa memanfaatkan fungsi dan parameter pada python.
Sehingga kode programnya akan terlihat seperti ini:
def selamat_datang (nama):
print(f'Halo {nama}, selamat datang!')
selamat_datang('Nurul')
selamat_datang('Lendis')
selamat_datang('Fabri')
selamat_datang('isa')
Dan kita tetap akan mendapatkan output yang sama. Lebih elegan bukan π
Parameter Wajib
Parameter di dalam python bisa lebih dari satu, bisa wajib semua (harus diisi), dan bisa juga bersifat opsional.
Perhatikan contoh fungsi berikut:
def perkenalan (nama, asal):
print(f"Perkenalkan saya {nama} dari {asli}")
Jika dipanggil:
perkenalan("Renza Ilhami", "Jawa Timur")
Kita akan mendapatkan output:
Perkenalkan saya Renza Ilhami dari Jawa Timur
Tapi jika kita memanggilnya dengan parameter tidak lengkap, justru kita akan mendapatkan error:
perkenalan("Renza Ilhami")
Error:
Exception has occurred: TypeError
perkenalan() missing 1 required positional argument: 'asal'
Kenapa? Karena kita hanya memasukkan satu parameter saja padahal parameter yang diminta ada 2.
Parameter Opsional (atau Default)
Tidak semua parameter fungsi pada python itu bersifat wajib. Ada yang opsional.
Parameter opsional adalah parameter yang seandainya tidak diisi, dia sudah memiliki nilai default.
Perhatikan contoh berikut:
def suhu_udara (daerah, derajat, satuan = 'celcius'):
print(f"Suhu di {daerah} adalah {derajat} {satuan}")
Pada fungsi suhu_udara()
di atas, kita mendefinisikan 3 buah parameter:
daerah
derajat
suhu = 'celcius'
Dua parameter pertama adalah bersifat wajib dan harus diisi, sedangkan parameter ketiga tidak wajib. Jika tidak kita isi, maka nilai default-nya adalah “celcius”.
Sekarang, kita coba panggil fungsi tersebut dengan 2 cara:
suhu_udara("Surabaya", 30)
suhu_udara("Surabaya", 86, 'Fahrenheit')
Jika dijalankan, outputnya akan terlihat seperti ini:
Suhu di Surabaya adalah 30 celcius
Suhu di Surabaya adalah 86 Fahrenheit
Fungsi Dengan Parameter Tidak Berurut
Jika kita perhatikan lagi fungsi suhu_udara()
, kita akan dapati kalau parameter yang bersifat opsional hanya ada 1, dan hanya ada di belakang.
Tapi, bagaimana jika ternyata parameter opsionalnya ada lebih dari 1?
Coba perhatikan:
def suhu_udara (daerah, derajat = 30, satuan = 'celcius'):
print(f"Suhu di {daerah} adalah {derajat} {satuan}")
Pada fungsi tersebut, kita telah mengatur nilai default untuk parameter derajat
. Sehingga sekarang kita memiliki dua buah parameter.
Kita coba panggil dengan 2 parameter seperti ini:
suhu_udara('Jakarta', 'fahrenheit')
Apa outputnya?
Suhu di Jakarta adalah fahrenheit celcius
Hmmm. Kok gitu?
Padahal kita inginnya hanya mengisi 2 parameter saja:
- Satu untuk parameter
daerah
- Dan yang kedua untuk parameter
satuan
Tapi di sini malah terisi adalah parameter derajat
.
Untuk mengatasi hal ini, kita bisa mendefinisikan nama argumen/parameter yang akan kita isi.
Perhatikan contoh ini:
suhu_udara('Jakarta', 'fahrenheit')
suhu_udara('Jakarta', satuan = 'fahrenheit')
Pemanggilan fungsi di atas akan menghasilkan output:
Suhu di Jakarta adalah fahrenheit celcius
Suhu di Jakarta adalah 30 fahrenheit
Dengan mendefinisikan nama argumen yang kita passing, kita sekarang bisa memanggilnya bahkan secara tidak berurutan sekalipun:
suhu_udara(satuan='kelvin', daerah='Makasar', derajat=100)
Output:
Suhu di Makasar adalah 100 kelvin
Fungsi yang Mengembalikan Nilai
Jenis fungsi yang berikutnya adalah berkaitan dengan nilai kembalian.
Ditinjau dari segi pengembalian nilai, fungsi terbagi menjadi 2:
- Fungsi yang tidak mengembalikan nilai
- Fungsi yang mengembalikan nilai
Pada contoh-contoh di atas, kita telah membuat dan memanggil fungsi-fungsi yang tidak memiliki nilai.
Sekarang, kita akan coba membuat fungsi yang mempunyai atau mengembalikan sebuah nilai.
def luas_persegi (sisi):
return sisi * sisi
Penjelasan
- Kata kunci
return
berfungsi untuk mengembalikan nilai. - Nilai yang dikembalikan suatu fungsi, bisa kita olah kembali untuk berbagai kebutuhan.
Contoh:
# tidak menghasilkan output apa pun
luas_persegi(10)
# menghasilkan output
print('Luas persegi dengan sisi 4 adalah:', luas_persegi(4))
# kita juga bisa simpan di dalam variabel
persegi_besar = luas_persegi(100)
persegi_kecil = luas_persegi(50)
print('Toal luas persegi besar dan kecil adalah:', persegi_besar + persegi_kecil)
Jika dijalankan, kita akan mendapatkan output:
Luas persegi dengan sisi 4 adalah: 16
Toal luas persegi besar dan kecil adalah: 12500
Jadi intinya: fungsi yang mengembalikan nilai adalah sebuah fungsi yang jika kita panggil, dia akan memberikan kita sebuah nilai yang bisa kita olah lebih lanjut, seperti misalkan kita simpan dalam sebuah variabel atau kita lakukan operasi tertentu.
Lebih dari 1 return
Jika statement return
telah dieksekusi pada sebuah fungsi, maka semua proses yang ada di dalam blok kode fungsi tersebut akan berhenti.
Sehingga, misalkan kita memiliki lebih dari 1 buah return, maka hanya ada satu return saja yang dieksekusi. Dan ketika sebuah return telah dieksekusi, semua perintah yang ada di bawahnya akan di-skip –ini mirip dengan perintah break
pada perulangan for mau pun while.
Perhatikan contoh berikut:
def persentase (total, jumlah):
if (total >= 0 and total <= jumlah):
return total / jumlah * 100
return False
# output 50
print(persentase(30, 60))
# output False
print(persentase(100, 60))
Output:
50.0
False
Ruang Lingkup (dan Siklus Hidup) Variabel Pada Fungsi
Variabel memiliki ruang lingkup dan siklus hidup.
Secara umum, terdapat dua ruang lingkup variabel pada python:
- Variabel global
- Dan variabel lokal
Variable global adalah variabel yang bisa dipanggil dari manapun dari satu file python.
Sedangkan variable lokal adalah variabel yang hanya hidup di dalam satu blok kode tertentu (seperti di dalam fungsi, seperti kasus kita pada pertemuan ini).
Perhatikan contoh berikut:
kota = 'Lamongan'
def halo() :
print(kota)
print('[print secara langsung]', kota)
print('[panggil fungsi halo]', end=' ')
halo()
Output:
[print secara langsung] Lamongan
[panggil fungsi halo] Lamongan
Pada kode di atas, variabel kota
yang ada di dalam fungsi, adalah variabel kota
yang sama dengan yang ada di luar fungsi.
Tapi, coba kita ubah kode programnya:
kota, provinsi = 'Lamongan', 'Jawa Timur'
def hello ():
provinsi = 'Jawa Barat'
print(kota, provinsi)
print('[PANGGIL FUNGSI hello()]')
hello()
print('\n[SECARA LANGSUNG]')
print(kota, provinsi)
Output:
[PANGGIL FUNGSI hello()]
Lamongan Jawa Barat
[SECARA LANGSUNG]
Lamongan Jawa Timur
Pencerahan
- Kita membuat 2 buah variabel dengan nama
kota
danprovinsi
- Kita mengubah variabel
provinsi
pada fungsihello()
- Saat fungsi
hello()
dieksekusi, benar saja variabelprovinsi
berubah. - Tapi, ketika kita tampilkan lagi (secara langsung) variabel
provinsi
, nilainya kembali ke nilai semula.
Kenapa?
Karena ketika kita mengubah variabel provinsi
pada fungsi hello()
, itu sebenarnya kita tidak merubah variabel provinsi
yang ada di luar, melainkan kita membuat variabel baru dengan nama yang sama, akan tetapi dengan ruang lingkup lokal yang hanya bisa diakses pada fungsi hello()
saja.
Docstring
Yang terakhir, kita bisa memberikan sebuah deskripsi terhadap fungsi yang kita buat.
Deskripsi ini biasanya akan ditampilkan oleh Text Editor mau pun IDE sebagai bantuan tentang apa yang sebenarnya dilakukan oleh sebuah fungsi.
Caranya gampang.
Untuk mendefinisikan deskripsi program, kita hanya perlu menuliskan komentar multi baris tepat setelah mendefinsikan nama fungsi.
Perhatikan contoh berikut:
def suhu_udara (daerah, derajat = 30, satuan = 'celcius'):
"""
Fungsi ini bertugas untuk menampilkan teks yang memberikan informasi
tentang suhu udara di suatu daerah.
"""
print("Suhu di {} adalah {} {}".format(daerah, derajat, satuan))
Berikut ini contoh tampilannya jika kita menggunakan Visual Studio Code.
Fungsi yang Memanggil Dirinya Sendiri
Dari segi tempat pemanggilan, fungsi pada python bisa dipanggil dari berbagai tempat.
Bisa dari console. Bisa dari fungsi yang lainnya. Bisa juga dari dirinya sendiri.
Fungsi yang memanggil dirinya sendiri, akan menciptakan sebuah perulangan. Dan perulangan ini biasa disebut sebagai perulangan rekursif.
Insyaallah, pada pertemuan selanjutnya kita akan membahas tentang fungsi rekursif pada python.
Kode Program Lengkap
Untuk kalian yang ingin mengakses kode program lengkap dari pertemuan ini. Langsung saja kunjungi link ini.
Terima kasih banyak!