Fungsi dan Sub Program pada Python

baca 5 menit
Fungsi dan Sub Program pada Python

Dalam pemrograman python, fungsi merupakan kunci dari terbentuknya program yang besar. Bahkan hampir mustahil rasanya membuat program kompleks tanpa menggunakan fungsi ini. Oleh karena itulah sangat penting untuk memahami konsep fungsi, bukan hanya pada Python saja namun juga bahasa lainnya.

Nah pada kesempatan kali ini kita akan membahas tentang fungsi pada Python sekalian juga contoh kasusnya. Lanjutt..

Fungsi atau dalam istilah pemrograman disebut dengan “function” merupakan blok kode yang digunakan untuk menyelesaikan masalah spesifik.

Baca lebih lanjut..

Format Pembuatan Blok Fungsi pada Pyhton

Satu blok fungsi pada Python ditandai dengan keyword def yang menandakan definisi fungsi. Dilanjutkan dengan identifier atau nama fungsi dan bagian opsional yaitu parameter.

Secara umum format fungsi pada python terlihat seperti ini:

def <nama_fungsi>([param_1], [param_2], [param_n]):
    <tubuh_fungsi>
  • nama_fungsi: identifier yang digunakan untuk memanggil fungsi yang telah dibuat
  • param_1, param_2, dst: parameter atau masukan yang diberikan pada fungsi (opsional)
  • tubuh_fungsi: barisan kode yang akan dijalankan ketika fungsi dipanggil

Ingat! indentasi pada python ini sangat berpengaruh

Contoh fungsi yang benar 👍

python
def print_hello():
    print("Hello World!")

Contoh fungsi yang salah 👎

python
def print_hello():
print("Hello World!")

Jadi jangan sampai lupa indentasinya, karena bisa-bisa berujung error 😫

Pemanggilan Fungsi pada Python

Fungsi pada Python tentu tidak dapat berdiri sendiri. Untuk menggunakannya tidak cukup hanya deklarasi saja, tetapi juga harus dilakukan pemanggilan.

Untuk memanggil sebuah fungsi, kita dapat menuliskan identifier dari fungsi tersebut diikuti dengan tanda kurung buka dan tutup. Jika fungsi tersebut menerima parameter maka kita juga harus mengisikannya.

Formatnya seperti ini:

<nama_fungsi>([param_1], [param_2], [param_n])
  • nama_fungsi: identifier dari fungsi yang dipanggil
  • param: parameter yang diberikan pada fungsi untuk diproses (opsional sesuai kebutuhan fungsi)

Mungkin kode ini sudah tidak asing lagi ya…

python
print("Hello World")
print()
print("Belajar python bareng Inva")

Output:

Hello World

Belajar python bareng Inva

Sadar atau tidak, sebenarnya dengan menggunakan print statement ini kita sudah memanggil sebuah fungsi. Fungsi print ini menerima argumen opsional berupa string yang dapat diisi 1 nilai atau banyak nilai sekaligus atau bisa juga tidak diisi sama sekali.

Contoh Kasus Penggunaan Fungsi

Nah setelah tahu format pembuatan dan pemanggilan fungsi, sekarang kita akan coba membuat fungsi sendiri.

Misal ada sebuah kasus, kita diminta untuk mencetak data siswa yang terdiri dari nama, umur, kelas, dan nilai akhir. Cukup sederhana ya, hanya memerlukan perintah print saja.

python
nama = "Inva"
umur = 18
kelas = "12 MIPA"
nilai = 94

print("Nama  :", nama)
print("Umur  :", umur, "tahun")
print("Kelas :", kelas)
print("Nilai :", nilai)

Output:

Nama  : Inva
Umur  : 18 tahun
Kelas : 12 MIPA
Nilai : 94

Sejauh ini aman tidak ada kendala. Sekarang masalah lainnya muncul, bagaimana dengan data siswa yang lain? Semisal di kelas tersebut ada 30 siswa, kalau kita menulis kode tersebut sebanyak 30 kali bayangkan saja berapa baris kode yang harus dibuat.

Nah untuk mengakali masalah ini, kita bisa menggunakan fungsi. Sehingga cukup dengan memberi argumen maka data siswa akan tercetak.

Fungsi yang akan dibuat kali ini bernama cetak_data dengan 4 argumen yaitu nama, umur, kelas, dan nilai. Tidak perlu menulis ulang, tinggal kita modifikasi sedikit kode yang sebelumnya menjadi seperti ini:

python
# deklarasi fungsi `cetak_data`
def cetak_data(nama, umur, kelas, nilai):
    print("Nama  :", nama)
    print("Umur  :", umur, "tahun")
    print("Kelas :", kelas)
    print("Nilai :", nilai)
    print() # tambah baris kosong

# memanggil fungsi `cetak_data`
cetak_data("Inva", 18, "12 MIPA", 94)
cetak_data("Adi", 17, "11 IPS", 80)
cetak_data("Dita", 17, "10 BHS", 100)

Output:

Nama  : Inva
Umur  : 18 tahun
Kelas : 12 MIPA
Nilai : 94

Nama  : Adi
Umur  : 17 tahun
Kelas : 11 IPS
Nilai : 80

Nama  : Dita
Umur  : 17 tahun
Kelas : 10 BHS
Nilai : 100

Nah jadi lebih singkat kan, tidak perlu memanggil print berkali-kali. Selain itu kode yang dibuat juga lebih mudah dibaca. Tapi apa yang sebenarnya terjadi?

python
# deklarasi fungsi `cetak_data`
def cetak_data(nama, umur, kelas, nilai):
    print("Nama  :", nama)
    print("Umur  :", umur, "tahun")
    print("Kelas :", kelas)
    print("Nilai :", nilai)
    print() # tambah baris kosong
...

Pertama kita melakukan deklarasi fungsi dengan nama cetak_data dan memberinya 4 variable parameter. Parameter ini bekerja selayaknya variable pada umumnya, yang membedakan hanya pengisiannya saja. Variable parameter ini hanya bisa (dan harus) diisi ketika pemanggilan fungsi.

Pada tubuh fungsi cetak_data kita menuliskan logika sesuai dari tujuan awal, yaitu mencetak data siswa. Nah data siswa yang dicetak (nama, umur, kelas, dan nilai) ini berasal dari variable parameter yang sebelumnya sudah disediakan.

...
# memanggil fungsi `cetak_data`
cetak_data("Inva", 18, "12 MIPA", 94)
cetak_data("Adi", 17, "11 IPS", 80)
cetak_data("Dita", 17, "10 BHS", 100)

Lanjut ke bagian pemanggilan. Di sini kita memanggil fungsi cetak_data dengan mengisikan semua parameter yang ada. Yang perlu diperhatikan di sini adalah urutan pengisian parameter. Karena pada bagian deklarasi kita menyediakan parameter dengan urutan nama, umur, kelas, nilai maka pengisian parameter juga harus urut. Jumlah parameter yang diberikan juga tidak boleh lebih atau kurang dari yang sudah dideklarasikan sebelumnya.

Ketika fungsi dipanggil, maka parameter pada fungsi akan terisi dan tubuh fungsi akan dieksekusi sesuai logika dan sesuai data yang sudah diberikan sebagai parameter. Sampai disini fungsi telah selesai dijalankan.

Apa Saja yang Bisa Dilakukan dengan Fungsi?

Tidak terbatas dengan perintah print saja. Pada tubuh fungsi ini kita dapat menempatkan kode python apa saja, asalkan valid dan sesuai logika. Deklarasi variable, perulangan, percabangan, ternary, list comprehension semua bisa dilakukan. Karena hal ini lah fungsi juga biasa disebut dengan sub prgram. Ini karena setiap fungsi bisa bekerja seperti program masing-masing.

Untuk demonstrasi saja, mari kita tambahkan sedikit percabangan pada kode yang sebelumnya sudah dibuat.

python
# deklarasi fungsi `cetak_data`
def cetak_data(nama, umur, kelas, nilai):
    # buat variable predikat nilai
    predikat = ""
    if nilai > 94:
        predikat = "A"
    elif nilai > 82:
        predikat = "B"
    elif nilai > 72:
        predikat = "C"
    else:
        predikat = "D"

    print("Nama     :", nama)
    print("Umur     :", umur, "tahun")
    print("Kelas    :", kelas)
    print("Nilai    :", nilai)
    print("Predikat :", predikat)
    print() # tambah baris kosong

# memanggil fungsi `cetak_data`
cetak_data("Inva", 18, "12 MIPA", 94)
cetak_data("Adi", 17, "11 IPS", 80)
cetak_data("Dita", 17, "10 BHS", 100)
cetak_data("Budi", 18, "12 MIPA", 68)

Penasaran outputnya? Coba jalankan sendiri ya 😉

Selain bisa menampung semua kode python, tubuh fungsi ini juga memiliki beberapa statement dan keyword khusus yang hanya dapat digunakan didalam scope fungsi. Beberapa diantaranya adalah return dan pass yang akan kita bahas pada kesempatan selanjutnya.

Selanjutnya apa?

Setelah berkenalam dengan fungsi, pada kesempatan selanjutnya kita akan membahas tentang salah satu keyword khusus yang ada pada fungsi, yaitu return statement pada Python 3.

Cukup sekian untuk kesempatan kali ini, semoga bermanfaat. See ya 👋