Function

Pernahkah anda menemui suatu kondisi dimana kita harus menuliskan kode yang sama beberapa kali hanya untuk melakukan task dengan data yang berbeda? Hal tersebut tentunya cukup merepotkan, bukan? Disinilah function berperan aktif dalam membantu rutinitas anda.

Mengenal Function

Function merupakan sekumpulan baris kode yang bertujuan untuk melakukan task tertentu. Untuk mengatasi permasalahan kita dalam hal ini menuliskan kode secara berulang untuk melakukan task yang sama, maka nantinya kita perlu melakukan generalisasi kode dan meletakkannya pada sebuah function. Sehingga ketika kita ingin melakukan task yang sama untuk dataset yang berbeda, kita cukup memanggil nama function tersebut tanpa harus menuliskan perintahnya berulang kali. Tentunya hal ini akan membuat kode kita semakin reusable, mudah dipahami, lebih enak dibaca, dan menghemat waktu kita.

Built-in Function

Sebenarnya, kita sudah beberapa kali melakukan pemanggilan function. Pada materi sebelumnya, kita sudah mengenal dan menggunakan function print() range() type() list() yang merupakan built-in function alias fungsi bawaan yang sudah disediakan oleh python.

Di materi kali ini, kita juga akan mengenal satu lagi function bawaan python yang bernama help(). Function ini berguna untuk memberikan panduan terkait sebuah function yang akan kita bahas pada sub-materi berikutnya.

Docstring

Docstring merupakan singkatan dari Documentation String yang berguna untuk menjelaskan cara kerja function tersebut. Docstring biasanya terletak pada baris pertama tepat setelah header function tersebut.

Menuliskan docstring pada function memang tidak wajib, namun alangkah baiknya jika kita tetap menuliskannya agar mempermudah rekan kita dalam memahami function tersebut saat berkolaborasi.

Kita bisa melihat docstring pada suatu function dengan memanggil function bawaan python yaitu help(). Mari kita coba melihat docstring pada function print().

Di baris pertama, function help menunjukkan bahwa function print merupakan built-in function. Kemudian tepat setelah baris print(...) adalah docstring yang tertera pada function bawaan print().

Jika kita hanya ingin menampilkan docstring saja tanpa embel-embel lainnya, maka kita bisa melakukannya dengan memanggil atribut __doc__ seperti pada contoh berikut.

Membuat Function pertama

Sekarang, mari kita coba dengan membuat function sederhan kita sendiri atau yang disebut user-defined function.

Sintaks Function

def nama_function(parameter):
  '''docstring'''
  # baris kode mulai dari sini
	return

Potongan kode diatas merupakan susunan utama sebuah function. Mari kita jabarkan detilnya.

  1. Keyword def yang berguna untuk memulai definisi sebuah function serta sebagai penanda header pada function tersebut.

  2. Nama function yang digunakan untuk memanggil atau menjalankan function itu sendiri. Nama function haruslah bersifat unique alias tidak boleh ada lebih dari satu function dengan nama yang sama. Python tidak mendukung overloading seperti pada beberapa bahasa pemrograman lainnya.

  3. Parameter atau argumen yang berperan sebagai "input" dimana kita meletakkan variabel yang hendak di proses pada function tersebut.

  4. Tanda titik dua : yang menunjukkan akhir dari sebuah header function.

  5. Docstring yang menjelaskan cara kerja function tersebut.

  6. Statement atau baris logika kode yang menjadi inti dari function itu sendiri, yang didahului oleh indentasi sebanyak 4 karakter spasi (default) sebagai penunjuk hirarki kode kepada interpreter.

  7. Return statement yang berfungsi untuk mengembalikan sebuah nilai setelah function dijalankan. Return statement bisa jadi bersifat opsional tergantung pada use case yang dikerjakan, namun kita akan membahasnya nanti.

Setelah mengetahui komponen-komponen pada sebuah function, marilah sekarang kita mulai membuat function yang berguna untuk menjumlahkan dua bilangan.

def penjumlahan_dua_bilangan():
  bil1 = 10
  bil2 = 4
  jumlah = bil1 + bil2
  print(jumlah)

Kemudian mari kita coba jalankan function yang baru saja kita buat dengan cara memanggil namanya seperti berikut.

penjumlahan_dua_bilangan()
>>>> 14

Bagus, function yang kita buat sudah berjalan dengan baik. Namun, function tersebut masih bersifat statis, karena kedua bilangan yang akan dijumlahkan didefinisikan secara manual didalam body function. Sehingga kita tidak bisa secara bebas memasukkan bilangan yang kita inginkan.

Nah untuk mengatasi masalah tersebut, berikutnya kita akan menambahkan parameter pada fungsi tersebut.

Function dengan Parameter

Parameter dalam sebuah function bisa dibilang berperan sebagai input, karena dalam pemanggilannya kita akan meneruskan nilai atau variabel yang nantinya akan diproses didalam function tersebut. Dengan demikian function yang kita miliki semakin general dan fleksibel karena adaptif terhadap nilai parameter atau nilai input.

def penjumlahan_dua_bilangan(bil1, bil2):
  jumlah = bil1 + bil2
  print(jumlah)

Bagus, kita sudah memperbarui function yang barusan dibuat. Namun untuk pemanggilannya cukup berbeda karena sekarang kita perlu memasukkan dua bilangan untuk dijumlahkan.

bil1 = 10
bil2 = 4
penjumlahan_dua_bilangan(bil1, bil2)
>>>> 14

# atau

penjumlahan_dua_bilangan(10, 4)
>>>> 14

Sampai sini kita sudah berhasil membuat function yang cukup fleksibel untuk menjumlahkan dua buah bilangan. Untuk saat ini mungkin orang lain atau tim proyek kita tidak akan kesulitan memahami function yang baru saja kita buat. Sayangnya, jika function ini semakin kompleks dan rumit tentunya mereka membutuhkan sebuah arahan atau penjelasan mengenai apa yang dilakukan oleh function ini. Oleh karena itu, berikutnya kita akan menambahkan docstring sebagai panduan dari function yang baru saja kita buat, agar nantinya orang lain tidak kesulitan dalam memahami kode kita.

Seperti yang sudah kita bahas pada sub-bab sebelumnya, kita akan meletakkan docstring dibawah header dan tepat di baris pertama.

def penjumlahan_dua_bilangan(bil1, bil2):
  '''Fungsi ini bertujuan untuk menjumlahkan dua buah bilangan yang diberikan
  melalui parameter, kemudian menampilkan hasilnya pada console.

  Parameter:
  bil1: bilangan riil dari -~ hingga ~
  bil2: bilangan riil dari -~ hingga ~'''

  jumlah = bil1 + bil2
  print(jumlah)

Sekarang, mari kita jalankan kembali untuk memastikan docstring kita berhasil ditambahkan.

help(penjumlahan_dua_bilangan)
>>>> Help on function penjumlahan_dua_bilangan in module __main__:

		 penjumlahan_dua_bilangan(bil1, bil2)
		    Fungsi ini bertujuan untuk menjumlahkan dua buah bilangan yang diberikan
		    melalui parameter, kemudian menampilkan hasilnya pada console.
		    
		    Parameter:
		    bil1: bilangan riil dari -~ hingga ~
		    bil2: bilangan riil dari -~ hingga ~

Well, sampai disini kode kita sudah semakin mendekati kaidah best practice. Orang tidak lagi merasa kesulitan dalam memahami apa yang dilakukan oleh function tersebut.

Selanjutnya, agar kode kita semakin reusable maka kita akan menambahkan return statement yang berfungsi untuk mengembalikan hasil dari proses sebuah function. Mari kita bahas!

Return Value

Jika sebelumnya kita mengenal parameter sebagai input dari sebuah function, maka kita bisa menyebut return statement sebagai output **dari sebuah function.

Pada contoh kode sebelumnya, kita menampilkan hasil penjumlahan dengan cara memanggil print() diakhir function. Memang sebelumnya tidak ada masalah karena function yang dibuat telah berjalan dengan sesuai. Namun, bagaimana jika masih ada operasi berikutnya setelah penjumlahan? Tentunya kita seharusnya menyimpan hasil penjumlahan yang dilakukan oleh penjumlahan_dua_bilangan() , bukan? Kalau begitu, mari kita coba menyimpan hasil dari function yang sudah kita buat sebelumnya.

num = penjumlahan_dua_bilangan(10,5)
print(num)

>>>> 15
>>>> None

Jika kita jalankan kode diatas, maka kita akan mendapat 2 baris output pada console, yaitu angka 15 dan sebuah tipe data None. Angka 15 didapat dari perintah print() yang ada didalam function penjumlahan_dua_bilangan(). Sedangkan None adalah isi dari variabel num, artinya kita gagal dalam menyimpan hasil penjumlahan dua bilangan tersebut.

Tipe data None sama halnya dengan null pada bahasa pemrograman lainnya, yang intinya menunjukkan bahwa variabel tersebut kosong dan tidak memiliki isi nilai apapun.

Disinilah return statement berperan. Mari kita coba lakukan sedikit modifikasi pada kode sebelumnya.

def penjumlahan_dua_bilangan(bil1, bil2):
  '''Fungsi ini bertujuan untuk menjumlahkan dua buah bilangan yang diberikan
  melalui parameter, kemudian menampilkan hasilnya pada console.

  Parameter:
  bil1: bilangan riil dari -~ hingga ~
  bil2: bilangan riil dari -~ hingga ~'''

  jumlah = bil1 + bil2
  print(jumlah)

  return jumlah

Selanjutnya, mari kita coba jalankan kode terbaru kita seperti berikut.

num = penjumlahan_dua_bilangan(10,5)
print(num)

>>>> 15
>>>> 15

Sekarang kita akan mendapati dua buah output bernilai 15. Seperti pada penjelasan sebelumnya, angka 15 pertama didapatkan dari perintah print() yang ada pada bagian akhir function. Kemudian angka 15 kedua merupakan isi dari variabel num, yang artinya kita telah berhasil menyimpan hasil penjumlahan kedua bilangan tersebut. Sehingga, jika nantinya diperlukan operasi lanjutan maka kita cukup membuat variabel untuk menampung keluaran atau output dari function kita.

Last updated