Return Statement pada Python
Pada kesempatan kali ini kita akan membahas tentang return
statement pada Python 3, statement yang memungkinkan kita mengembalikan nilai dari sebuah fungsi.
Tentang Return Statement
Return statement merupakan statement spesial yang hanya bisa digunakan di dalam fungsi. Statement ini memungkinkan kita mengembalikan nilai yang sudah diproses pada fungsi ke pemanggil.
Sebagai gambaran, return statement memungkinkan kita melakukan hal ini:
# hitung sisi miring segitiga
# tanpa fungsi:
c = (a*a + b*b)**.5
# dengan fungsi:
c = hitung_sisi_miring(a, b)
Kira kira bagaimana caranya? sebelumnya kita perlu bahas dulu format pembuatannya.
Format Penulisan Return Statement
Statement ini terdiri dari keyword return
diikuti dengan nilai opsional yang ingin dikembalikan. Nilai kembalian ini bisa berisi apapun, bisa data numerik, string, list, atau tidak mengembalikan nilai sama sekali.
def nama_fungsi([parameter]):
tubuh_fungsi
...
...
return [nilai_kembalian]
nilai_kembalian
: nilai yang akan dikembalikan pada pemanggil (opsional)
Udah, gitu aja.. satu baris kode yang akan sangat berguna π.
Contoh Penggunaan Return Statement
Pada kesempatan kali ini kita akan coba menggunakan return
statement dalam 2 kasus. Yang pertama adalah untuk mengembalikan sebuah nilai, dan yang kedua kita coba menggunakan return
statement untuk keluar paksa dari eksekusi fungsi.
Mengembalikan Nilai dengan Return Statement
Seperti yang sudah disebutkan sebelumnya, kegunaan return
statement adalah untuk mengembalikan nilai dari fungsi ke pemanggil. Nah sekarang kita akan coba buat implementasi kodenya.
Semisal kita ingin menghitung sisi miring segitiga. Seperti yang kita tahu, perhitungan ini dapat diselesaikan menggunakan teorema pythagoras. Masih ingat kan ya?
Persamaannya cukup sederhana, jika diterjemahkan ke kode python maka akan seperti ini:
c = (a*a + b*b)**.5
Nah, sekarang katakanlah kita punya 3 segitiga yang akan dicari sisi miringnya dengan panjang sisi yang berbeda.
Nama segitiga | Alas (a) | Tinggi (b) |
---|---|---|
segitiga 1 | 3 | 4 |
segitiga 2 | 5 | 12 |
segitiga 3 | 7 | 24 |
Kalau kita ingin mencari masing-masing sisi miringnya (c) dengan kode python yang telah kita buat sebelumnya maka jadinya akan seperti ini:
a1, a2, a3 = 3, 5, 7
b1, b2, b3 = 4, 12, 24
c1 = (a1*a1 + b1*b1)**.5
c2 = (a2*a2 + b2*b2)**.5
c3 = (a3*a3 + b3*b3)**.5
print("sisi miring segitiga 1:", c1)
print("sisi miring segitiga 2:", c2)
print("sisi miring segitiga 3:", c3)
output:
sisi miring segitiga 1: 5
sisi miring segitiga 2: 13
sisi miring segitiga 3: 25
Kode tersebut valid memang, tapi coba perhatikan lagi, ada 3 baris kode yang diulang dengan logika yang sama namun variablenya berbeda. Bisa dilihat pada perhitungan variable c1
, c2
, dan c3
. Nah, hal ini sebenarnya bisa kita persingkat dengan memanfaatkan fungsi.
Kita akan membuat fungsi dengan nama hitung_sisi_miring
yang menerima 2 parameter yaitu a
(alas) dan b
(tinggi). Selanjutnya, tubuh fungsi berisi perhitungan sisi miring (c
) sesuai rumus yang ada lalu kita kembalikan nilainya menggunakan return
statement.
Sehingga kodenya menjadi seperti ini:
def hitung_sisi_miring(a, b):
c = (a*a + b*b)**.5
return c
c1 = hitung_sisi_miring(3, 4)
c2 = hitung_sisi_miring(5, 12)
c3 = hitung_sisi_miring(7, 24)
print("sisi miring segitiga 1:", c1)
print("sisi miring segitiga 2:", c2)
print("sisi miring segitiga 3:", c3)
output:
sisi miring segitiga 1: 5
sisi miring segitiga 2: 13
sisi miring segitiga 3: 25
Sipp, dengan begini kita tidak perlu menuliskan rumus panjang berkali-kali dan bisa dilihat kodenya jadi lebih mudah dibaca β kan?
Alih-alih menuliskan rumus perhitungan satu-persatu, sekarang kita hanya perlu memanggil fungsi hitung_sisi_miring
dengan argumen/parameter yang sesuai. Ini karena rumus logika perhitungan sudah dipindahkan dalam tubuh fungsi.
Sekarang kita coba bedah apa yang terjadi ketika pemanggilan hitung_sisi_miring(3, 4)
# pemanggilan fungsi hitung_sisi_miring(3, 4)
def hitung_sisi_miring(a, b):
# sekarang nilai a = 3 dan b = 4
# melakukan perhitungan sesuai rumus
c = (a*a + b*b)**.5 # nilai c = 5
return c # mengembalikan nilai c pada pemanggil
Ketika fungsi sudah sampai pada keyword return
maka nilai terkait akan dikembalikan (dalam hal ini c
). Sehingga nilai dari hitung_sisi_miring(3, 4)
adalah 5. Hal ini menyebabkan assignment c1 = hitung_sisi_miring(3, 4)
secara otomatis menjadi c1 = 5
. Begitu pula untuk c2
dan c3
.
Menggunakan Return Statement untuk Menghentikan Eksekusi Fungsi
Kalau sebelumnya kita sudah coba menuliskan return
statement di akhir tubuh fungsi, bagaimana jika kita menuliskannya di tengah-tengah? mari kita cari tahu.
Coba perhatikan lagi fungsi yang sudah kita buat sebelumnya. Bisa kita lihat bahwa fungsi hitung_sisi_miring
dapat menerima parameter apa saja, termasuk bilangan negatif. Nah, karena panjang sisi segitiga tidak mungkin negatif maka harus ada pengaman dari fungsi tersebut. Katakanlah kita akan mengembalikan nilai -1 jika ada salah satu dari parameter bernilai negatif, maka kodenya bisa ditulis seperti ini:
def hitung_sisi_miring(a, b):
if a < 0 or b < 0:
return -1
c = (a*a + b*b)**.5
return c
Bisa dilihat ya terdapat 2 return statement pada fungsi tersebut, tapi kita-kira bagaimana proses eksekusinya? return
mana yang akan dieksekusi? Mari kita coba jalankan.
def hitung_sisi_miring(a, b):
if a < 0 or b < 0:
return -1
c = (a*a + b*b)**.5
return c
c1 = hitung_sisi_miring(3, 4) # a dan b positif
c2 = hitung_sisi_miring(-3, 4) # a negatif, b positif
c3 = hitung_sisi_miring(3, -4) # a positif, b negatif
c4 = hitung_sisi_miring(-3, -4) # a dan b negatif
print("nilai c1:", c1)
print("nilai c2:", c2)
print("nilai c3:", c3)
print("nilai c4:", c4)
Output:
nilai c1: 5
nilai c2: -1
nilai c3: -1
nilai c4: -1
Pada output tersebut terlihat bahwa jika kita memasukkan nilai negatif pada salah satu atau kedua parameter, nilai yang dikembalikan adalah -1 atau pada kasus ini nilai dari return
statement yang pertama. Lalu bagaimana dengan return
statement selanjutnya?
Pada Python, ketika sebuah fungsi menyentuh keyword return
maka hal yang akan dilakukan adalah keluar dari fungsi dan mengembalikan nilai pada saat itu juga. Karena sudah ada nilai yang dikembalikan, maka eksekusi fungsi dinyatakan selesai sehingga seluruh kode selanjutnya tidak akan dieksekusi.
Oleh karena itulah kita mendapatkan output seperti yang ada diatas.
return
statement ini juga bisa bertindak seperti keyword break
yang ada pada perulangan. Tetapi alih-alih menghentikan iterasi, dengan return
statement kita bisa keluar paksa dan menghentikan alur fungsi. Caranya adalah dengan memanggil return
tanpa memberikan nilai kembalian. Coba perhatikan kode berikut:
# definisi fungsi cetak
def cetak():
print("Halo, Inva!")
print("Ini adalah perintah sebelum return dipanggil")
print("Setelah return dieksekusi maka fungsi dinyatakan selesai")
return
print("Baris ini tidak akan dieksekusi")
print("Baris ini juga tidak")
print("Apalagi ini!!")
cetak() # memanggil fungsi cetak
Output:
Halo, Inva!
Ini adalah perintah sebelum return dipanggil
Setelah return dieksekusi maka fungsi dinyatakan selesai
Bisa dilihat ya, semua perintah print
setelah keyword return
tidak dieksekusi.
Selanjutnya apa?
Cukup sekian untuk kesempatan kali ini, semoga bermanfaat π
Pada kesempatan selanjutnya kita akan membahas satu lagi keyword khusus pada fungsi yaitu tentang pass
statement pada Python 3.
See ya π