Fungsi adalah blok kode yang akan dijalankan ketika dipanggil dan fungsi ini dapat dipanggil atau digunakan berulang-ulang. fungsi dapat mempersingkat kode atau membuat kode kita menjadi simpel. untuk membuat fungsi kita perlu menambahkan keyword def dibagian depan diikuti nama fungsi lalu parameter yang dimasukkan ke dalam tanda kurung(parameter boleh dikosongkan).
def namaFungsi(parameter1,parameter2):
perintah
diatas adalah struktur fungsi, kita dapat memasukkan parameter lebih dari satu atau bahkan dapat dikosongkan. berikut adalah contoh fungsi.
def fungsi():
print('ini adalah fungsi')
contoh diatas kita membuat fungsi tanpa parameter yang akan melakukan perintah print. tapi kode diatas saja belum cukup, anda perlu memanggil fungsi tersebut agar dapat digunakan.
def fungsi():
print('ini adalah fungsi')
fungsi()
fungsi()
fungsi()
Output:
ini adalah fungsi ini adalah fungsi ini adalah fungsi
fungsi ini dapat memudahkan anda, anda tidak perlu menuliskan kode yang sama berulang ulang. misal kita membuat program untuk menghitung luas segitiga dan menampilkan hasilnya.
alas1 = 3
tinggi1 = 2
hasil1 = (alas1 * tinggi1)/2
print('Segitiga dengan alas', alas1, 'dan tinggi', tinggi1, 'memiliki luas ', hasil1)
alas2 = 10
tinggi2 = 4
hasil2 = (alas2 * tinggi2)/2
print('Segitiga dengan alas', alas2, 'dan tinggi', tinggi2, 'memiliki luas ', hasil2)
alas3 = 4
tinggi3 = 5
hasil3 = (alas3 * tinggi3)/2
print('Segitiga dengan alas', alas3, 'dan tinggi', tinggi3, 'memiliki luas ', hasil3)
alas4 = 7
tinggi4 = 2
hasil4 = (alas4 * tinggi4)/2
print('Segitiga dengan alas', alas4, 'dan tinggi', tinggi4, 'memiliki luas ', hasil4)
Output:
Segitiga dengan alas 3 dan tinggi 2 memiliki luas 3.0 Segitiga dengan alas 10 dan tinggi 4 memiliki luas 20.0 Segitiga dengan alas 4 dan tinggi 5 memiliki luas 10.0 Segitiga dengan alas 7 dan tinggi 2 memiliki luas 7.0
diatas adalah program tanpa fungsi untuk menghitung luas dari 4 buah segitiga, cukup banyak bukan? padahal hanya 4 segitiga, bayangkan jika anda ingin menghitung 10 segitiga, mungkin anda akan menuliskan puluhan baris kode. dengan menggunakan fungsi kita dapat membuat program kita lebih simpel dan dan pendek. kita dapat membuat fungsi untuk menghitung luas dari segitiga dan menampilkan hasilnya.
def luasSegitiga(alas,tinggi):
hasil = (alas * tinggi)/2
print('Segitiga dengan alas', alas, 'dan tinggi', tinggi, 'memiliki luas ', hasil)
luasSegitiga(3,2)
luasSegitiga(10,4)
luasSegitiga(4,5)
luasSegitiga(7,2)
Output:
Segitiga dengan alas 3 dan tinggi 2 memiliki luas 3.0 Segitiga dengan alas 10 dan tinggi 4 memiliki luas 20.0 Segitiga dengan alas 4 dan tinggi 5 memiliki luas 10.0 Segitiga dengan alas 7 dan tinggi 2 memiliki luas 7.0
Output yang dihasilkan sama dengan sebelumnya, tetapi programnya menjadi lebih simpel dan pendek. pada program diatas kita menetapkan dua parameter yang wajib diisi yaitu alas dan tinggi. jika kita tidak mengisi salah satu parameter maka akan menyebabkan error.
def luasSegitiga(alas,tinggi):
hasil = (alas * tinggi)/2
print('Segitiga dengan alas', alas, 'dan tinggi', tinggi, 'memiliki luas ', hasil)
luasSegitiga(10,)
Output:
Traceback (most recent call last): File "Fungsi.py", line 32, in luasSegitiga(10,) TypeError: luasSegitiga() missing 1 required positional argument: 'tinggi'
agar tidak terjadi error kita bisa menetapkan nilai default pada parameter tinggi, dimana jika parameter tinggi tidak anda masukkan, maka variabel tinggi tersebut diisi dengan nilai default. kita misalkan nilai default dari tinggi adalah 3.
def luasSegitiga(alas, tinggi = 3):
hasil = (alas * tinggi)/2
print('Segitiga dengan alas', alas, 'dan tinggi', tinggi, 'memiliki luas', hasil)
luasSegitiga(10,)
Output:
Segitiga dengan alas 10 dan tinggi 2 memiliki luas 15.0
Contoh lain.
def jumlah(angka1, angka2, angka3):
total = angka1 + angka2 + angka3
print('totalnya adalah',total)
jumlah(2,4,8)
Output:
totalnya adalah 14
program diatas adalah program untuk menentukan jumlah dari 3 bilangan, lalu bagaimana jika saya ingin menambah satu parameter lagi atau 3 atau 4 parameter lagi? tentunya kita perlu mengubah fungsinya lagi. hal ini membuat fungsi jadi tidak dinamis, lalu bagaimana membuat fungsi yang dinamis, dimana kita bebas memasukkan jumlah parameter sesuai dengan keinginan kita tanpa mengubah-ubah lagi fungsi yang sudah kita buat. cara dengan menambahkan * pada awal parameter.
def jumlah(*angka):
total = angka1 + angka2 + angka3
print('totalnya adalah',total)
jumlah(2,4,8)
akan tetapi ini belum cukup, kode diatas akan menyebabkan error dikarenakan parameter yang kita masukkan akan dijadikan sebuah tuple sehingga kita tidak dapat melakukan penjumlahan dengan cara biasa. contoh kita mengisi parameter 2, 3, dan 4 ini akan dikonversi ke tuple (2, 3, 4). anda dapat menggunakan perulangan untuk melakukan penjumlahan.
def jumlah(*angka):
total = 0
for a in angka:
total += a
print('totalnya adalah',total)
jumlah(2,4,8)
jumlah(2,3)
jumlah(3,6,3,5,7)
jumlah(1,5,7,9,6,3,3,5,8)
Output:
totalnya adalah 14 totalnya adalah 5 totalnya adalah 24 totalnya adalah 47
Selanjutnya bagaimana jika kita ingin menggunakan variabel total diluar fungsi tersebut, mari kita coba.
def jumlah(*angka):
total = 0
for a in angka:
total += a
print('totalnya adalah',total)
jumlah(2,4,8)
print(total)
kode diatas akan menghasilkan error dikarenakan variabel total tidak terdefinisi, ini disebabkan variabel total hanya bisa digunakan di dalam fungsi saja(variabel apapun yang diinisiasi atau dibuat di dalam fungsi tidak dapat digunakan diluar). lalu bagaimana caranya agar kita bisa menggunakan variabel total diluar fungsi? anda dapat memanfaatkan keyword return. return ini berfungsi untuk mengembalikan nilai setiap fungsi dipanggil atau digunakan. agar lebih memahami langsung saja kita coba terapkan.
def jumlah(*angka):
total = 0
for a in angka:
total += a
return total
totalJumlah = jumlah(2,4,8)
print(totalJumlah)
Output:
14
pada program diatas kita mengembalikan nilai total setiap kali kita menggunakan fungsi jumlah, nilai kembalian total kita simpan kedalam variabel totalJumlah.
didalam fungsi kita juga dapat memanggil fungsi yang lain. contoh:
def jumlah(angka):
total = 0
for a in angka:
total += a
return total
def rerata(*angka):
rerata = jumlah(angka) / len(angka)
return rerata
rerata = rerata(10,10,40,30)
print(rerata)
Output:
22.5
kita punya fungsi jumlah untuk menjumlahkan angka-angka, dan fungsi ini digunakan didalam fungsi rerata. selanjutnya kita akan mempelajari tentang fungsi rekursif dan fungsi lambda atau anonymous function.