*args, **kwargs Pada Function

 


Apa itu *args dan **kwargs?

*args dan **kwargs merupakan sebuah variable yang sering ditemui pada fungsi. Keduanya digunakan sebagai parameter.

Nama dari args dan kwargs sendiri hanya nama default dan bukan merupakan sebuah aturan yang mutlak. Kita dapat menggantinya dengan nama lain seperti *angka - **angka atau *siswa - **siswa. Dinamakan args karna diambil dari akronim arguments. Sedangkan kwargs akronim dari keyword arguments.

Kapan Menggunakan *args dan **kwargs?

Kedua variable ini kita gunakan saat fungsi memerlukan parameter yang jumlahnya tidak pasti atau fleksible. Jadi fungsi tersebut bisa menampung banyak parameter dan bisa juga menampung hanya satu parameter.

Perbedaan *args dan **kwargs

Sebenarnya perbedaan ini lebih mengarah ke jumlah bintang yang digunakan.

  • Satu bintang membuat nilai parameter menjadi tuple.
  • Dua bintang membuat nilai parameter menjadi objek dictionary.

Tuple merupakan tipe data seperti list namun bersifat immutable (isinya tidak pernah berubah). Apapun tipe datanya kecuali dictionary jika variable yang menampungnya diberi bintang satu maka ia akan dikonversi menjadi tuple.

Sedangkan Dictionary adalah tipe data yang tersusun atas key:value. Maka dari itulah untuk dua bintang namun defaultnya kwargs yang berarti keyword arguments.

Maka dari itu, saat memanggil fungsi dengan parameter dua bintang ini, kita perlu menyertakan keyword pada argumennya seperti contoh di bawah ini:
def perkenalan(**biodata):
	print(biodata)

perkenalan_siswa(nama="Dilan", ttl="Bandung, 31 Desember 1990", usia=20)
Output:
{'nama': 'Dilan', 'ttl': 'Bandung, 31 Desember 1990', 'usia': 20}
Kita juga dapat menggunakan cara ini untuk memanggil fungsi.
siswa = ["Lisa", "Dilan", "Rose", "Jisoo", "Jennie"]
biodata = {'nama':'Dilan', 'ttl':'Bandung, 31 Desember 1990', 'usia':20}

def absensi(*siswa):
	print(siswa)

def perkenalan(**biodata):
	print(biodata)

absensi(*siswa)
perkenalan(**biodata)
Output:
('Lisa', 'Dilan', 'Rose', 'Jisoo', 'Jennie')
{'nama': 'Dilan', 'ttl': 'Bandung, 31 Desember 1990', 'usia': 20}

Komentar

Postingan populer dari blog ini

NumPy Array Search

NumPy Array Split

NumPy Array Iterating