Parameter Lanjutan: default, *args & **kwargs

Parameter bawaan, argumen kata kunci, serta menerima jumlah argumen bebas.

Part 14 dari 24 ± 40 menit Gratis

Parameter dengan nilai bawaan

def sapa(nama, sapaan="Halo"):
    return f"{sapaan}, {nama}!"

sapa("Dina")                 # "Halo, Dina!"
sapa("Dina", "Selamat pagi") # "Selamat pagi, Dina!"

Parameter ber-default harus ditulis setelah parameter wajib.

> Jebakan klasik: jangan memakai list/dict sebagai default (def f(x, daftar=[])). Default dibuat sekali saat function didefinisikan sehingga dibagi antar pemanggilan. Pakai None:

> ```

> def f(x, daftar=None):

> if daftar is None:

> daftar = []

> ```

Argumen posisi vs kata kunci

def profil(nama, umur, kota):
    return f"{nama}, {umur}, {kota}"

profil("Ani", 20, "Bandung")                 # posisi
profil(kota="Bandung", nama="Ani", umur=20)  # kata kunci: urutan bebas
profil("Ani", kota="Bandung", umur=20)       # campuran (posisi dulu)

Argumen kata kunci membuat pemanggilan lebih mudah dibaca.

*args: jumlah argumen bebas

def jumlah(*angka):
    total = 0
    for n in angka:
        total += n
    return total

jumlah(1, 2, 3)        # 6
jumlah()               # 0

Di dalam function, angka adalah tuple berisi semua argumen posisi tambahan.

**kwargs: argumen kata kunci bebas

def tampilkan(**data):
    for k, v in data.items():
        print(f"{k} = {v}")

tampilkan(nama="Ani", umur=20)

Di dalam function, data adalah dict.

Urutan parameter

def f(wajib, default=1, *args, **kwargs) — wajib, bawaan, *args, lalu **kwargs.

Membuka list/dict saat memanggil

angka = [1, 2, 3]
jumlah(*angka)               # sama dengan jumlah(1, 2, 3)

data = {"nama": "Ani", "umur": 20}
tampilkan(**data)            # sama dengan tampilkan(nama="Ani", umur=20)

Parameter khusus posisi / kata kunci (lanjutan)

def f(a, b, /, c, *, d): a dan b hanya boleh posisi; d hanya boleh kata kunci. Berguna untuk merancang API yang jelas.

Type hint pada parameter (preview)

def sapa(nama: str, sapaan: str = "Halo") -> str:
    return f"{sapaan}, {nama}!"

Dibahas lebih lengkap di bab dataclass dan type hint.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X