Estimasi Waktu Baca: 2 menit

Apa itu *args dan **kwargs?

Baik *args dan **kwargs merupakan sebuah variabel 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 karena diambil dari akronim arguments. Sedangkan kwargs akronim dari keyword arguments.

Kapan Menggunakan *args dan **kwargs?

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

<span class="token keyword">def</span> <span class="token function">absen</span><span class="token punctuation">(</span><span class="token operator">*</span>siswa<span class="token punctuation">)</span><span class="token punctuation">:</span>
	<span class="token keyword">for</span> panggil <span class="token keyword">in</span> siswa<span class="token punctuation">:</span>
		<span class="token keyword">print</span><span class="token punctuation">(</span>panggil<span class="token punctuation">)</span>
<span class="token comment"># Panggil fungsi</span>
absen<span class="token punctuation">(</span><span class="token string">"Ani"</span><span class="token punctuation">,</span> <span class="token string">"Budi"</span><span class="token punctuation">,</span> <span class="token string">"Citra"</span><span class="token punctuation">,</span> <span class="token string">"Desi"</span><span class="token punctuation">,</span> <span class="token string">"Elen"</span><span class="token punctuation">)</span>
[email protected]<span class="token punctuation">:</span>$python belajar<span class="token punctuation">.</span>py
Ani
Budi
Citra
Desi
Elen

Perbedaan *args dan **kwargs

Sebenarnya perbedaan ini lebih mengarah ke jumlah bintang yang digunakan.

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

Tuple merupakan tipe data seperti list namun bersifat immutable (isinya tidak dapat diubah). Apapun tipe datanya kecuali dictionary jika variabel 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 nama 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.

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

perkenalan_siswa(nama="Budi Ganteng", ttl="Surabaya, 31 Desember 2000", usia=20)

Keluaran:

{'nama': 'Budi Ganteng', 'ttl': 'Surabaya, 31 Desember 2000', 'usia': 20}

Kita juga dapat menggunakan cara ini untuk memanggil fungsi.

siswa = ["Ani", "Budi", "Cika", "Dita", "Edi"]
biodata = {'nama':'Budi Ganteng', 'ttl':'Surabaya, 31 Desember 2000', 'usia':20}

def absensi(*siswa):
	print(siswa)

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

absensi(*siswa)
perkenalan(**biodata)

Keluaran:

('Ani', 'Budi', 'Cika', 'Dita', 'Edi')
{'nama': 'Budi Ganteng', 'ttl': 'Surabaya, 31 Desember 2000', 'usia': 20}

Bang, lantas bagaimana bila tanda bintang tersebut kita terapkan bukan sebagai parameter fungsi? Misal kita deklarasikan sebagai variabel pada umumnya?

Pertanyaan yang bagus! Akan saya jelaskan di lain artikel karena pembahasannya cukup panjang.