Daftar Referensi Python

*args dan **kwargs membuat fungsi bisa menerima jumlah argumen yang bebas: *args menampung argumen posisi sebagai tuple, **kwargs menampung keyword argument sebagai dictionary.

Sintaks

def fungsi(wajib, *args, **kwargs):
    ...

Aturan

Bagian Menampung Menjadi
*args argumen posisi ekstra tuple
**kwargs keyword argument ekstra dict
Urutan parameter wajib → *args**kwargs (tidak boleh dibalik)

Nama args/kwargs hanyalah konvensi — yang wajib adalah tanda * dan ** di depannya.

Contoh

def total(*angka):
    print(sum(angka))

total(1, 2, 3)
total(10, 20)

Coba di IDE

Output:

6
30

Contoh Lainnya

**kwargs: pasangan nama-nilai bebas

def profil(**data):
    for kunci, nilai in data.items():
        print(kunci, ":", nilai)

profil(nama="Andi", kelas="9A")

Coba di IDE

Output:

nama : Andi
kelas : 9A

Gabungan: wajib + *args + **kwargs

def pesan(menu, *tambahan, **catatan):
    print("Menu:", menu)
    print("Tambahan:", tambahan)
    print("Catatan:", catatan)

pesan("bakso", "es teh", pedas="sedang")

Coba di IDE

Output:

Menu: bakso
Tambahan: ('es teh',)
Catatan: {'pedas': 'sedang'}

Kebalikannya: unpacking saat memanggil

def tambah(a, b, c):
    print(a + b + c)

angka = [1, 2, 3]
tambah(*angka)

Coba di IDE

Output:

6

Kesalahan Umum

  • Urutan salah: def f(**kwargs, *args)SyntaxError. Urutannya: wajib, *args, **kwargs.
  • Mengira args adalah list — ia tuple (tidak bisa di-append).
  • Mengirim keyword yang tidak dikenali ke fungsi tanpa **kwargsTypeError: unexpected keyword argument.

Pelajari Lebih Lanjut