Hari 13: *args, **kwargs & Parameter Lanjutan
60 min
Last updated 26 Mar 2026
*args — Argumen Posisi Tak Terbatas
def jumlahkan(*angka):
print(f"Menerima: {angka}") # tuple
return sum(angka)
print(jumlahkan(1, 2, 3)) # 6
print(jumlahkan(10, 20, 30, 40)) # 100
print(jumlahkan()) # 0
def log(level, *pesan):
prefix = f"[{level.upper()}]"
print(prefix, " ".join(str(p) for p in pesan))
log("info", "Server", "started", "on port 8000")
log("error", "Connection failed")
**kwargs — Argumen Keyword Tak Terbatas
def buat_profil(**info):
print(f"Menerima: {info}") # dict
for kunci, nilai in info.items():
print(f" {kunci}: {nilai}")
buat_profil(nama="Budi", umur=25, kota="Jakarta")
buat_profil(produk="Laptop", harga=15_000_000, stok=10)
# Gabungan parameter
def fungsi_lengkap(wajib, default="A", *args, **kwargs):
print(f"wajib : {wajib}")
print(f"default: {default}")
print(f"args : {args}")
print(f"kwargs : {kwargs}")
fungsi_lengkap("X", "B", 1, 2, 3, nama="Budi", kota="JKT")
Unpacking saat Pemanggilan
def tambah(a, b, c):
return a + b + c
angka = [10, 20, 30]
kw_dict = {"a": 1, "b": 2, "c": 3}
print(tambah(*angka)) # unpack list → 60
print(tambah(**kw_dict)) # unpack dict → 6
# Gabung list/dict dengan unpacking
l1 = [1, 2, 3]
l2 = [4, 5, 6]
gabung = [*l1, *l2] # [1,2,3,4,5,6]
d1 = {"a": 1}
d2 = {"b": 2}
gd = {**d1, **d2} # {"a":1, "b":2}
Keyword-Only & Positional-Only Parameters
# Parameter setelah * HARUS berupa keyword argument
def bagi(a, b, *, pembulatan=False):
hasil = a / b
return round(hasil) if pembulatan else hasil
print(bagi(10, 3)) # 3.333...
print(bagi(10, 3, pembulatan=True)) # 3
# bagi(10, 3, True) # TypeError!
# Parameter sebelum / hanya boleh positional (Python 3.8+)
def greet(nama, /, salam="Halo"):
print(f"{salam}, {nama}!")
greet("Budi")
# greet(nama="Budi") # TypeError!Assignment
Buat fungsi buat_tabel(*kolom, **baris) yang mencetak tabel sederhana. Kolom adalah nama-nama kolom, baris adalah pasangan label: list_nilai.
Expected output:
-----------------------------------------------
Matematika | IPA | Bahasa
-----------------------------------------------
Budi | 88 | 92 | 75
Ani | 72 | 85 | 90
Citra | 95 | 88 | 82
-----------------------------------------------
PY
main.py
Solution
Output