Fungsi Lanjut Python

18 views

Sebelum membaca artikel ini, seharusnya Anda sudah memahami terlebih dahulu perihal fungsi. Artikel ini membahas lanjutan dari dasar fungsi di Python. Fungsi lanjutan ini terdiri dari rungsi rekursi dan fungsi lambda (fungsi anonim).

Fungsi Rekursi

Fungsi rekursi yaitu fungsi yang memanggil dirinya sendiri secara berulang. Makara di dalam badan fungsi kita memanggil fungsi itu sendiri.

Di dalam matematika, kita mengenal perihal faktorial. Faktorial yaitu perkalian bilangan orisinil berturut – turut dari n hingga dengan 1. Faktorial n dinotasikan dengan n! dimana n! = n (n – 1)(n – 2)(n – 3) ... (3)(2)(1). Faktorial yaitu teladan dari fungsi rekursi.

 
# Contoh fungsi rekursi
# Menentukan faktorial dari bilangan
def faktorial(x):
"""Fungsi rekursi untuk memilih faktorial bilangan"""
if x == 1:
return 1
else:
return (x * faktorial(x-1))

bil = 4
print("Faktorial dari", bil, " adalah", faktorial(bil))
 

Pada teladan di atas, fungsi faktorial() memanggil dirinya sendiri secara rekursi. Ilustrasi proses dari fungsi di atas yaitu ibarat berikut:

faktorial(4)
4 * faktorial(3)
4 * 3 * faktorial(2)
4 * 3 * 2 * 1
4 * 3 * 2
4 * 6
24

Rekursi fungsi berakhir dikala bilangan sudah berkurang menjadi 1. Ini disebut sebagai kondisi dasar (base condition). Setiap fungsi rekursi harus mempunyai kondisi dasar. Bila tidak, maka fungsi tidak akan pernah berhenti (infinite loop).

Keuntungan Menggunakan Rekursi

  • Fungsi rekursi menciptakan isyarat terlihat lebih clean dan  elegan
  • Fungsi yang rumit dapat dipecah menjadi lebih kecil dengan rekursi
  • Membangkitkan data berurut lebih gampang memakai rekursi ketimbang memakai iterasi bersarang.

Kerugian Menggunakan Rekursi

  • Terkadang logika dibalik rekursi agak sukar untuk diikuti
  • Pemanggilan rekursi kurang efektif alasannya yaitu memakan lebih banyak memori
  • Fungsi rekursi lebih sulit untuk didebug


Fungsi Anonim (Lambda)

Salah satu fitur python yang cukup mempunyai kegunaan yaitu fungsi anonim. Dikatakan fungsi anonim alasannya yaitu fungsi ini tidak diberikan nama pada dikala didefinisikan.

Pada fungsi biasa kita memakai kata kunci def untuk membuatnya, sedangkan fungsi anonim ini kita memakai kata kunci lambda. Oleh alasannya yaitu itu, fungsi anonim ini dikenal juga dengan fungsi lambda.

Sintaks Fungsi Lambda

Fungsi lambda mempunyai sintaks ibarat berikut:

lambda arguments: expression

Fungsi lambda dapat mempunyai banyak argumen, tapi hanya boleh mempunyai satu ekspresi. Ekspresi tersebutlah yang dikembalikan sebagai hasil dari fungsi. Fungsi lambda dapat kita simpan di dalam variabel untuk dipakai kemudian.

 
# Program memakai lambda 1 argumen
kuadrat = lambda x: x*x

# Output: 9
print(kuadrat(3))

# Lambda dengan 2 argumen
kali = lambda x, y: x*y

# Output: 12
print(kali(4,3))

Tanpa memakai lambda, teladan fungsi di atas akan menjadi ibarat berikut:

>>> def kuadrat(x):
return x**2
>>> kuadrat(3)
9

>>> def kali(x,y):
return x*y
>>> kali(4,3)
12

Penggunaan Fungsi Lambda

Lambda dipakai pada dikala kita membutuhkan fungsi anonim untuk dikala yang singkat. Di Python, fungsi lambda sering dipakai sebagai argumen untuk fungsi yang memakai fungsi lain sebagai argumen ibarat fungsi filter(), map(), dan lain-lain.

Contoh Penggunaan Lambda Dengan Fungsi filter()

Fungsi filter mengambil dua buah argumen, yaitu satu buah fungsi dan satu buah list.

Sesuai dengan namanya filter (penyaring), fungsi akan menguji  semua anggota list terhadap fungsi, apakah dan mengambil hasil yang bernilai True. Hasil keluarannya yaitu sebuah list gres hasil filter. Berikut yaitu contohnya:

 
# Filter bilangan ganjil dari list
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list_ganjil = list(filter(lambda x: x%2 != 0, my_list))

# Output: [1, 3, 5, 7, 9]
print(list_ganjil)

Contoh Penggunaan Lambda Dengan Fungsi map()

Fungsi map() mengambil dua buah argumen, yaitu satu buah fungsi dan satu buah list.

Fungsi map() akan memetakan atau memanggil fungsi dengan satu persatu anggota list sebagai argumennya. Hasilnya yaitu list gres hasil dari keluaran fungsi terhadap masing-masing anggota list. Berikut yaitu contohnya:

 
# Program untuk menghasilkan kuadrat bilangan
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
kuadrat = list(map(lambda x: x*x, my_list))

# Output: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100 ]
print(kuadrat)

 

Author: 
    author
    No related post!