Argumen: default, *args, **kwargs
Nilai bawaan, jumlah bebas posisional, dan kata kunci.
Pahami konsepnya
Parameter boleh punya nilai bawaan: def sapa(nama, sapaan="Halo"): — pemanggil cukup kirim nama; sapaan boleh dilewati, diganti, atau dikirim dengan nama: sapa("Ari", sapaan="Selamat"). Argumen posisional dikirim berurutan; keyword argument dikirim dengan nama sehingga urutan bebas.
*args mengumpulkan argumen posisional berlebih menjadi tuple: def jumlah(*angka): menerima jumlah berapa pun — jumlah(1, 2, 3) memberi angka = (1, 2, 3). **kwargs mengumpulkan keyword argument berlebih menjadi dict: def profil(**data): menerima nama="Ari", umur=17 sebagai data = {"nama": "Ari", "umur": 17}.
Urutan deklarasi wajib: parameter biasa, *args, parameter keyword-only, **kwargs. Star di definisi mengumpulkan; star di pemanggilan memecah — dua sisi koin yang sama.
Coba contoh kode
def sapa(nama, sapaan="Halo"):
return f"{sapaan}, {nama}!"
print(sapa("Ari"))
print(sapa("Budi", "Selamat pagi"))
print(sapa(nama="Citra", sapaan="Oi"))
def jumlah(*angka):
total = 0
for n in angka:
total += n
return total
print(jumlah(1, 2, 3, 4, 5)) # 15
def profil(**data):
for k, v in data.items():
print(f" {k}: {v}")
profil(nama="Ari", umur=17, kota="Bandung")sapa menunjukkan tiga cara memanggil: posisional saja, campuran, dan semua keyword. *args mengubah lima angka menjadi tuple yang diiterasi; **kwargs mengubah tiga pasangan menjadi dict yang di-loop items().
Latihan singkat
Uji: rata(*angka) — rata(10,20,30) harus `20.0`.