Return Statement pada Python

baca 5 menit
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:

python
# 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.

Persamaannya cukup sederhana, tetapi lain cerita jika kita coba terjemahkan ke kode python. Rumus tersebut akan menjadi seperti ini.

python
c = (a*a + b*b)**.5

Nah, sekarang katakanlah kita punya 3 segitiga yang akan dicari sisi miringnya dengan panjang sisi yang berbeda.

Nama segitigaAlas (a)Tinggi (b)
segitiga 134
segitiga 2512
segitiga 3724

Kalau kita ingin mencari masing-masing sisi miringnya (c) dengan kode python yang telah kita buat sebelumnya maka jadinya akan seperti ini:

python
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 sekaligus mengembalikan nilainya menggunakan return statement.

Sehingga kodenya menjadi seperti ini:

python
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)

python
# pemanggilan fungsi hitung_sisi_miring(3, 4)
# sekarang nilai a = 3 dan b = 4

def hitung_sisi_miring(a, b):
    # 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 paling tidak ada salah satu parameter yang bernilai negatif, maka kodenya bisa ditulis seperti ini:

python
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.

python
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 dan mengembalikan nilai terkait sesegera mungkin. 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:

python
# 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 👋