15%

Definisi Fungsi dan Argumen def pada Python

10-May-2024

Dalam dunia pemrograman Python, fungsi menjadi alat yang sangat penting untuk menyusun kode yang rapi dan efisien. Tapi, pernahkah Anda bertanya-tanya apa sebenarnya "fungsi" itu? Bagaimana cara menggunakannya dengan efektif melalui argumen def? Artikel ini akan menyelidiki konsep dan penerapan fungsi dalam Python, dan bagaimana hal itu dapat mengubah cara Anda menulis kode.

Apa itu Argument def

Pernahkah Anda merasa lelah mengulang kode yang sama berulang kali?

Dalam Python, fungsi adalah jawaban untuk permasalahan tersebut. Ibaratnya, fungsi adalah sebuah wadah yang mengelompokkan serangkaian pernyataan sehingga dapat dijalankan lebih dari sekali di dalam program.

Hebatnya lagi, fungsi juga bisa menghasilkan nilai balik dan memungkinkan Anda menentukan parameter sebagai input fungsi. Parameter ini dapat berbeda setiap kali kode dijalankan.

Dengan membuat operasi menjadi sebuah fungsi, Anda menciptakan sebuah "alat" serbaguna yang bisa dipakai di berbagai situasi. Lebih mendasar lagi, fungsi adalah alternatif dari kebiasaan "copy-paste" dalam pemrograman.

Daripada memiliki banyak salinan kode yang redundan, Anda bisa mengemasnya ke dalam satu fungsi. Ini akan sangat menghemat waktu dan tenaga Anda di masa depan.

Jika nanti operasi tersebut perlu diubah, Anda cukup memperbarui satu fungsi tersebut, bukan berkutat pada banyak salinan kodenya.

Fungsi adalah struktur program paling dasar yang disediakan Python untuk memaksimalkan penggunaan ulang kode (code reuse) dan meminimalkan redundansi kode. Dengan fungsi, program Anda menjadi lebih efisien, terstruktur, dan mudah dipahami.

Kenapa Menggunakan Fungsi?

Fungsi merupakan konsep penting dalam hampir semua bahasa pemrograman, tak terkecuali Python. Anda mungkin pernah mengenalnya dengan sebutan subrutin atau prosedur. Secara garis besar, fungsi memiliki dua peran utama dalam pengembangan program:

  1. Memaksimalkan Penggunaan Kembali Kode dan Meminimalkan Duplikasi
    Berbeda dengan kode yang langsung dijalankan, fungsi memungkinkan kita mengelompokkan dan menggeneralisasi logika program untuk digunakan berulang kali di berbagai tempat. Ini seperti memiliki peralatan multifungsi yang dapat digunakan untuk berbagai keperluan. Dengan fungsi, kita dapat mengurangi duplikasi kode secara drastis, sehingga program menjadi lebih ringkas dan mudah dipelihara.
     
  2. Dekomposisi Prosedural
    Fungsi juga berperan dalam memecah sistem menjadi bagian-bagian yang lebih kecil dengan fungsi yang terdefinisi dengan baik. Sebagai contoh, bayangkan sesorang pembuat kue. Untuk membuat kue, seseorang harus melalui langkah-langkah seperti mencampur adonan, menguleninya, menambahkan topping, dan memanggang. Fungsi memungkinkan kita memecah keseluruhan proses menjadi sub-fungsi yang lebih kecil dan mudah dikelola.

Mempelajari fungsi akan membantu kita berpikir prosedural, yaitu bagaimana menyelesaikan sesuatu. Kemampuan ini akan menjadi bekal yang penting ketika kita nanti belajar membuat objek baru dengan kelas.

Pada bagian ini, kita akan menyelami berbagai aspek fungsi dalam Python, mulai dari dasar-dasar pembuatan fungsi dan cara memasukkan argumen ke dalam fungsi.

Fungsi mungkin tidak membutuhkan banyak sintaks baru, namun konsep ini akan membawa kita melangkah ke pemikiran pemrograman yang lebih komprehensif.

 

Sintaks Argumen def

Untuk mendefinisikan fungsi, Anda menggunakan sintaks berikut:

def nama_fungsi(argumen):

    # blok kode fungsi

 

Untuk memanggil fungsi tersebut, Anda cukup menuliskan nama fungsi dan memberikan argumen yang dibutuhkan.

nama_fungsi(argumen)

 

Contoh Sederhana def

Pernahkah Anda kesulitan menjumlahkan angka dengan jumlah yang tidak tentu dalam program Anda? Kode ini menawarkan solusi yang elegan untuk masalah tersebut.

Mari kita lihat fungsi pertama, mysum

def mysum(*args):

  total = 0

  for num in args:

    total += num

  return total

Fungsi mysum ini menggunakan konsep menarik yang disebut dengan arguments unpacking (*args). Dengan menggunakan *args, fungsi ini dapat menerima jumlah argumen berapapun.

  • *args menangkap semua argumen yang dilewatkan ke fungsi menjadi sebuah tuple.
  • Didalam fungsi, kita kemudian melakukan iterasi melalui setiap elemen dalam args menggunakan loop for num in args.
  • Di dalam loop, kita tambahkan setiap elemen (num) ke dalam variabel total yang kita inisialisasi sebagai 0.
  • Akhirnya, fungsi mengembalikan nilai total yang merupakan jumlah dari semua argumen yang diberikan.

 

Selanjutnya, kita lihat fungsi kedua, avg

def avg(*args):

  total = mysum(*args)

  return total / len(args)

avg(1, 2, 3, 4, 5)

Fungsi avg ini memanfaatkan fungsi mysum yang telah kita bahas sebelumnya.

  • avg juga menggunakan *args untuk menangkap argumen yang tidak tentu jumlahnya.
  • Pertama, fungsi avg memanggil mysum(*args) untuk menghitung jumlah dari semua argumen yang diberikan.
  • Kemudian, fungsi avg membagi hasil dari mysum dengan len(args), yang mengembalikan jumlah elemen di dalam args.
  • Dengan demikian, fungsi avg menghitung rata-rata dari semua argumen yang diberikan.

 

Penggunaan keseluruhan

Baris terakhir kode, avg(1, 2, 3, 4, 5), memanggil fungsi avg dan memberikan lima argumen (1, 2, 3, 4, dan 5).

  • Fungsi avg akan menghitung jumlah dari kelima argumen tersebut menggunakan mysum.
  • Setelah itu, avg akan membagi jumlah tersebut dengan jumlah argumen (5) untuk mendapatkan rata-rata.

Kode ini menunjukkan bagaimana kita bisa membuat fungsi yang fleksibel untuk menghitung jumlah dan rata-rata dari argumen yang tidak tentu jumlahnya. Dengan memanfaatkan *args, kita dapat menulis kode yang lebih ringkas dan mudah digunakan.

Fungsi avg dengan Argument **kwargs

def avg(**kwargs):

    nilai_total = mysum(*kwargs.values())

    jumlah_nilai = len(kwargs)

    return nilai_total / jumlah_nilai

Fungsi avg() menerima argumen spesial bernama **kwargs yang mewakili parameter "kata kunci" (keyword arguments). Parameter ini memungkinkan Anda untuk memasukkan data dengan cara yang lebih fleksibel dan mudah dibaca.

Di dalam fungsi, terdapat dua variabel utama:

  1. nilai_total: Digunakan untuk menyimpan total nilai yang akan dirata-ratakan.
  2. jumlah_nilai: Mencatat jumlah nilai yang dimasukkan.

Algoritma fungsi avg() bekerja sebagai berikut:

  1. Mengumpulkan Nilai: Fungsi mysum(*kwargs.values()) digunakan untuk menghitung total nilai dari semua nilai dalam parameter **kwargs menggunakan fungsi mysum.
  2. Menghitung Rata-Rata: Hasil penjumlahan dibagi dengan len(kwargs), yang mewakili jumlah nilai yang dimasukkan, untuk mendapatkan nilai rata-rata.
  3. Mengembalikan Hasil: Nilai rata-rata dikembalikan sebagai hasil fungsi.

Contoh Penggunaan avg(**kwargs)

Mari kita lihat contoh bagaimana avg(**kwargs) dapat digunakan dalam program Python:

# Menghitung rata-rata nilai matematika

nilai_rata_rata = avg(matematika=80, fisika=90, kimia=75)

print(f"Rata-rata nilai matematika: {nilai_matematika}")


# Menghitung rata-rata umur

umur = avg(andi=25, budi=30, caca=22)

print(f"Rata-rata umur: {umur}")

Pada contoh pertama diatas, kita menghitung rata-rata untuk mata pelajaran Matematika, Fisika, dan Kimia.

Pada contoh kedua diatas, kita menghitung rata-rata umur tiga orang.

Kunci Rahasia: kwargs

Parameter **kwargs dalam fungsi avg() adalah kunci utama fleksibilitasnya. Parameter ini memungkinkan Anda untuk memasukkan data dengan nama yang sesuai dengan kebutuhan Anda, tanpa terikat pada urutan atau struktur tertentu.

Misalnya, Anda dapat menggunakan nama parameter seperti matematika, fisika, dan kimia untuk nilai matematika, atau andi, budi, dan caca untuk umur.

Fungsi avg(**kwargs) merupakan alat yang ampuh untuk menghitung rata-rata secara dinamis dalam program Python. Dengan memahami cara kerjanya dan memanfaatkan parameter **kwargs, Anda dapat menghitung rata-rata berbagai jenis data dengan mudah dan fleksibel.

Fungsi avg dengan Argumen Default

def avg(pertama=5, kedua=10):

    return (pertama + kedua) / 2

Fungsi ini terbagi menjadi beberapa bagian penting:

  1. Definisikan Fungsi: def menandakan awal definisi fungsi, diikuti dengan nama fungsi, yaitu avg.
     
  2. Parameter: Di dalam tanda kurung, terdapat parameter yang opsional, yaitu pertama dan kedua. Nilai defaultnya adalah 5 dan 10, berturut-turut.
     
  3. Isi Fungsi: Blok kode di dalam kurung () berisi logika fungsi. Dalam kasus ini, terdapat operasi penjumlahan pertama dan kedua yang kemudian dibagi 2.
     
  4. Nilai Kembali: Kata kunci return diikuti dengan ekspresi (pertama + kedua) / 2 menunjukkan nilai yang akan dikembalikan oleh fungsi.

Contoh Kode Fungsi Rekursif

def avg(bilangan):

    if len(bilangan) == 1:

        return bilangan[0]

    else:

        return (bilangan[0] + avg(bilangan[1:])) / len(bilangan)


# Memanggil fungsi

avg([1,2,3,4,5])

Mari kita telusuri kode tersebut dengan seksama untuk memahami cara kerjanya:

  1. Mendefinisikan Fungsi avg: Fungsi avg menerima satu argumen bernama bilangan, yang merupakan daftar berisi nilai-nilai yang ingin dirata-ratakan.
     
  2. Memeriksa Panjang Daftar: Pertama, fungsi memeriksa panjang daftar bilangan menggunakan len(bilangan). Jika panjang daftar hanya 1, artinya hanya ada satu nilai, maka fungsi langsung mengembalikan nilai tersebut menggunakan bilangan[0].
     
  3. Menghitung Rata-rata untuk Daftar Lebih dari Satu Elemen: Jika panjang daftar lebih dari 1, maka fungsi menggunakan teknik rekursif untuk menghitung rata-rata. Teknik ini melibatkan pemecahan daftar menjadi dua bagian: 
    Bagian pertama adalah elemen pertama daftar, diakses dengan bilangan[0].
    Bagian kedua adalah sisa list, diperoleh dengan bilangan[1:].
     
  4. Menghitung Rekursif dan Membagi dengan Panjang: Fungsi kemudian memanggil dirinya sendiri secara rekursif untuk menghitung rata-rata dari sisa list (avg(bilangan[1:])). Hasil rekursif ini ditambahkan dengan elemen pertama (bilangan[0]). Hasil penjumlahan kemudian dibagi dengan panjang list (len(bilangan)) untuk mendapatkan rata-rata keseluruhan.
     
  5. Memanggil Fungsi avg: Di bagian bawah kode, fungsi avg dipanggil dengan argumen berupa list [1, 2, 3, 4, 5]. Fungsi akan memproses list ini dan mengembalikan nilai rata-rata, yaitu 3.

Fungsi avg merupakan contoh rekursif yang efektif untuk menghitung rata-rata nilai dalam list Python. Fungsi ini bekerja dengan memeriksa panjang list, memecahnya menjadi bagian-bagian yang lebih kecil, dan menerapkan teknik rekursif untuk menghitung rata-rata secara bertahap.

Loop while vs Rekursif

# Menggunakan loop while

nilai = [1,2,3,4,5]

i = 0

total = 0

while i < len(nilai):

    total += nilai[i]

    i += 1

rata_rata = total / len(nilai)

 

Loop while memproses elemen satu per satu secara iteratif.

Kelebihan loop while:

  • Mudah dipahami dan di-debug.

Kekurangan loop while:

  • Bisa menjadi tidak efisien jika jumlah iterasi sangat banyak dan kondisi keluar tidak didefinisikan dengan baik.

Kelebihan rekursif:

  • Dapat menyelesaikan masalah yang kompleks dengan lebih elegan.
  • Dapat mengurangi kode yang diperlukan.

Kekurangan rekursif:

 

def dieksekusi di Runtime

Pernahkah Anda berpikir bagaimana fungsi sebenarnya didefinisikan di Python? 

Berbeda dari bahasa pemrograman kompilasi, def di Python adalah pernyataan yang dapat dieksekusi secara langsung. Artinya, ketika dijalankan, pernyataan ini akan membuat objek fungsi baru dan menetapkannya ke sebuah nama. (Ingat, di Python semuanya terjadi pada saat runtime, tidak ada istilah waktu kompilasi terpisah.)

Karena merupakan pernyataan, def dapat muncul di mana pun pernyataan bisa diletakkan, bahkan di dalam pernyataan lain. Sebagai contoh, meskipun definisi fungsi biasanya dijalankan saat modul yang memuatnya diimpor, kita juga bisa dengan sah mendefinisikan fungsi di dalam pernyataan if untuk memilih definisi alternatif:

if test:

  def func():

    # Definisi func dengan cara ini

    ...

else:

  def func():

    # Atau definisi func dengan cara ini

    ...

...


func() # Memanggil versi yang dipilih dan dibuat

 

Cara mudah memahami kode ini adalah dengan menganggap def mirip dengan pernyataan penugasan (=). Pernyataan ini hanya menetapkan sebuah nama pada saat runtime.

Tidak seperti bahasa kompilasi seperti C, fungsi Python tidak perlu didefinisikan seluruhnya sebelum program dijalankan.

Lebih umum lagi, definisi fungsi (def) tidak dievaluasi sampai mereka dieksekusi, dan kode di dalam definisi fungsi tidak dievaluasi sampai fungsi tersebut dipanggil nanti.

Karena definisi fungsi terjadi pada runtime, tidak ada yang istimewa tentang nama fungsi itu sendiri. Yang penting adalah objek yang dirujuk oleh nama tersebut:

nama_lain = func # Menetapkan objek fungsi

nama_lain()  # Memanggil func lagi

Di sini, fungsi tersebut ditetapkan ke nama yang berbeda dan dipanggil melalui nama barunya.

Seperti semua hal lainnya di Python, fungsi hanyalah objek. Objek fungsi dicatat secara eksplisit di memori pada saat program dijalankan. Bahkan, selain pemanggilan, fungsi memungkinkan penetapan atribut secara bebas untuk menyimpan informasi untuk penggunaan selanjutnya:

def func():

  ... # Membuat objek fungsi

func()  # Memanggil objek

func.atribut = nilai  # Menetapkan atribut

Fungsi dalam Python tidak hanya memfasilitasi penggunaan ulang kode dan pembacaan yang lebih baik, tetapi juga memberi programmer fleksibilitas dalam desain program. Dengan pemahaman yang baik tentang argumen def dan cara kerjanya, Anda dapat menulis kode yang lebih modular, efisien, dan mudah dipelihara.

Apakah Anda siap untuk meningkatkan keterampilan pemrograman Python Anda dengan fungsi?

Topik : python
Similar Posts

Komentar (0)

Tinggalkan Komentar