Lompat ke konten Lompat ke sidebar Lompat ke footer

Menggunakan *args dan **kwargs Pada Function Python

Daftar Isi
1. Pengertian *args dan **kwargs
2. Penggunaan *args pada function python
3. Penggunaan **Kwargs pada function python

Membuat function pada python, biasanya dilakukan dengan menginisiasi nama function, diikuti dengan argumen yang dimasukkan, ditambah dengan statemen. Kira-kira seperti di bawah ini.

1   def func(a, b):
2      return (a**2 + b**2)**0.5

Dilihat sekilas saja, pas sudah tahu bahwa function di atas digunakan untuk menghitung pythagoras dari argumen a dan b.

Akan tetapi sering sekali orang ahli python membuat function yang sulit dimengerti, salah satunya yang menggunakan argumen *args dan **kwargs. Dua hal ini sering membuat pemain baru pada python kesulitan memahaminya.

Pengertian *args dan **kwargs

baik *args maupun **kwargs memiliki kata kunci yang sama, yaitu args. Dimana kata tersebut merupakan singkatan dari arguments. kw pada **kwargs juga merupakan sebuah singkatan, dari kata keywords.

pengertian_args_kwargs_python

Artinya, *args, dan **kwargs memungkinkan pengguna python untuk memasukkan sebanyak mungkin argumen function, tanpa harus melakukan spesifikasi variabel untuk argumen tersebut.

Misalnya pada contoh sebelumnya, terdapat sebuah function dengan dua argumen a dan b, cukup mudah untuk dilakukan. Tapi bagaimana kalau argumennya ada 10 dari a sampai j?. Inisiasinya pun akan cukup panjang. 

Belum lagi misalnya jika 10 variabel tersebut ada kondisi kalau beberapa argumen tidak dimasukkan pun tidak mempengaruhi hasil fungsi. Masa iya harus tetap memasukkan 10 variabel ketika yang digunakan hanya 5? Mubadzir kan.

Karena itu, penulisan argumen yang banyak bisa dilakukan menggunakan *args dan **kwargs.

Cara Penggunaan *args pada Function Python

Seperti namanya, arguments, artinya semua argumen yang dimasukkan akan dikumpulkan menjadi sebuah array. Lebih tepatnya *args akan berperilaku seperti sebuah tuple pada python.

Untuk syntax-nya sendiri kira-kira seperti ini:

1   def func(*args):
2     print(args)
3  
4   func(1, 2, 3, 4, 5)

out:
(1, 2, 3, 4, 5)

Pada baris 1 dilakukan inisiasi function dengan nama func, argumennya *args. Ketika digunakan dalam statement di dalam function, tanda * dihapus, sehingga untuk menampilkan nilai dari *args hanya menggunakan print(args).

Ketika fungsinya dipanggil dengan argument 1, 2, 3, 4, 5, nilai yang muncul adalah sebuah tuple yang berisi nilai-nilai tersebut. 

Statement yang lebih kompleks pun dapat dilakukan seperti di bawah ini:

1   def func(*args):
2       for i in range(len(args)):
3           if i % 2 == 0:
4               print(args[i])

5   func(0, 1, 2, 3, 4, 5)

out:
0
2
4

Function func di atas akan menampilkan elemen args yang indeksnya genap.

Penggunaan **kwargs Pada Function Python

Karena namanya mirip, prinsip kerja **kwargs pun mirip dengan *args. Bedanya, pada **kwargs terdapat keywords. Karena ada keywords, ketika memasukkan argumen pun harus dengan keywords, misal (alas = 3, tinggi = 2), tidak bisa langsung (3, 2)

Karena menggunakan keywords, maka **kwargs akan bersifat seperti dictionary pada python. Sehingga, valuenya dapat diakses seperti ini:

1   def func(**kwargs):
2       print(kwargs["laut"])
3       print(kwargs["darat"])
4       print(kwargs["udara"])
5   
6   func(udara = "burung", darat = "badak", laut = "hiu")

out:
badak
hiu

Beda kan inisiasi argumentnya, begitu juga dengan statement untuk memanggil value **kwargs di dalam functionnya. Persis seperti dictionary python.

Yang perlu di garis bawahi adalah saat inisiasi argumennya. Saat mengambil value nya mirip dengan dictionary, misal pada baris ke dua, laut diubah menjadi string. Akan tetapi saat inisiasinya laut penulisannya seperti saat inisiasi variabel biasa.

1 komentar untuk "Menggunakan *args dan **kwargs Pada Function Python"

  1. Video Gaming and eSports – Videoslots, YouTube
    Twitch, YouTube, Amazon, Betfair, “I love it when Twitch streams live games,” she said in a recent interview with a Twitch youtube to mp4 streamer.

    BalasHapus