Apa Maksud dari *args dan kwargs pada Python?

ID • 1 month ago • 9 min read • 289 views
Apa Maksud dari *args dan kwargs pada Python?

Apa Maksud dari *args dan kwargs pada Python?

id9 min read • 289 views

Apa Maksud dari *args dan kwargs pada Python?

Bro, kalau lo udah mulai belajar Python atau bahkan udah cukup jago, pasti pernah denger istilah *args dan **kwargs, kan? Kalau belum, sini gue bantu lo paham. Gue kasih analogi sederhana: *args dan **kwargs itu kayak kotak ajaib yang bisa lo isi apapun, kapanpun, tanpa harus bingung sama ukuran kotaknya. Fleksibel banget, kan? Dua hal ini sering disebut magic variables. Kenapa? Karena fungsinya benar-benar bikin lo terpesona. Mereka nggak cuma variabel biasa yang cuma numpang lewat, tapi alat canggih buat bikin fungsi Python lo jadi lebih dinamis, efisien, dan ya, pastinya keren abis! Mereka punya tanda bintang (*) yang bikin mereka beda dari variabel biasa. Tanpa bintang, mereka cuma variabel biasa yang nggak ada istimewanya. Tapi dengan bintang, mereka jadi kayak superhero buat fungsi Python lo.

Apa pengertian Args dan Kwargs secara detail, simak ini ya bor.

Kapan *args dan kwargs Digunakan?

Pertanyaan pertama: "Kapan gue harus pakai *args dan **kwargs?" Jawabannya: Saat lo nggak yakin berapa banyak parameter yang akan dimasukkan ke fungsi.

Kalau lo bikin fungsi biasa, jumlah parameternya biasanya fix, alias tetap. Contoh:

def sapa(nama1, nama2, nama3):
    print(f"Halo, {nama1}, {nama2}, dan {nama3}! Apa kabar?")

Masalahnya, fungsi ini cuma bisa dipanggil kalau lo punya TEPAT tiga nama. Kalau lo cuma punya satu atau malah lima nama? Yaudah, Python bakal ngamuk dan kasih error.

Nah, *args dan **kwargs hadir buat nyelamatin lo dari masalah itu. Contoh:

# Menggunakan *args
def sapa_semua(*nama):
    print("Daftar orang yang disapa:")
    for orang in nama:
        print(f"- {orang}")


sapa_semua("Aldi", "Budi", "Citra", "Dedi", "Eka")

Output:

Daftar orang yang disapa: 
- Aldi 
- Budi 
- Citra 
- Dedi 
- Eka

Lo nggak perlu ribet tentuin jumlah parameter. Cuma tambahin tanda bintang (*) di parameter, dan fungsi lo bisa nerima berapapun argumen tanpa masalah. Mau 3, 10, atau bahkan 100? Hajar aja!

Baca Juga

 

Sementara **kwargs digunakan kalau lo mau argumennya berupa pasangan nama dan nilai, alias key-value. Contoh:

def biodata(**data):
    print("Biodata:")
    for key, value in data.items():
        print(f"{key.capitalize()}: {value}")

biodata(nama="Farhan", umur=25, pekerjaan="Programmer", hobi="Main Game")

Output:

Biodata: 
Nama: Farhan 
Umur: 25 
Pekerjaan: Programmer 
Hobi: Main Game

 

Apa Bedanya *args dan kwargs?

Oke, bro, langsung aja kita bahas. Perbedaan utama *args dan **kwargs itu sebenernya simpel banget, cuma soal jumlah bintang di depannya. Tapi jangan salah, meskipun cuma bintang, efeknya beda jauh, kayak bedanya jomblo biasa sama jomblo yang masih nunggu balikan. Yuk, gue jelasin dengan gaya santai biar makin nempel di otak!

 

Satu Bintang (*): Jadi Tuple

Kalau lo lihat satu bintang di depan argumen, itu tandanya semua data yang lo masukin bakal dikumpulin jadi satu tuple. Apa itu tuple? Bayangin aja kayak daftar tamu kondangan. Lo bisa ngasih nama sebanyak apapun, dan semuanya bakal masuk ke daftar tanpa urutan pasti harus siapa duluan. Misalnya gini:

def daftar_tamu(*nama):
    print("Tamu undangan:")
    for orang in nama:
        print(f"- {orang}")


daftar_tamu("Budi", "Susi", "Rudi", "Nani", "Lutfi")

Outputnya bakal begini:

Tamu undangan: 
- Budi 
- Susi 
- Rudi 
- Nani 
- Lutfi

Nah, di sini semua nama masuk ke dalam satu variabel berbentuk tuple. Kalau lo nggak tau tuple itu apa, anggap aja dia kayak list, tapi lebih "kaku." Lo nggak bisa ubah-ubah isinya sesuka hati. Jadi, kapan lo pake *args? Kalau lo butuh data yang fleksibel dan nggak peduli sama pasangan nama-nilai. Contohnya, daftar nama, angka, atau apa pun yang nggak perlu embel-embel deskripsi.

Analogi:

Lo kasih satu bintang (*args), kayak lo bilang ke orang, "Eh, bawa aja temen sebanyak apapun, gue nggak butuh tau nama lengkap mereka." Fleksibel kan?

 

Dua Bintang (): Jadi Dictionary

Kalau lo tambahin satu bintang lagi (**kwargs), ini beda cerita, bro. Di sini semua data yang masuk bakal dikumpulin jadi dictionary, alias pasangan nama dan nilai. Jadi, setiap data punya "judul" dan "isi," kayak menu makanan di restoran.

Misalnya gini:

def biodata(**info):
    print("Biodata lengkap:")
    for key, value in info.items():
        print(f"{key.capitalize()}: {value}")

biodata(nama="Rani", umur=27, pekerjaan="Desainer", hobi="Travelling")

Outputnya:

Biodata lengkap: 
Nama: Rani 
Umur: 27 
Pekerjaan: Desainer 
Hobi: Travelling

Di sini, setiap data harus punya keterangan alias key. Kalau nggak, Python bakal bingung kayak tukang parkir yang nggak dikasih plat nomor.

**Kapan lo pake kwargs? Kalau lo perlu data yang lebih terorganisir, terutama buat pasangan nama-nilai. Cocok buat form pendaftaran, detail produk, atau apa pun yang butuh deskripsi.

 

Bintang Satu vs Bintang Dua: Battle Royale

Simpelnya begini:

  1. Satu bintang (*): Semua data jadi tuple. Cocok buat data tanpa pasangan nama-nilai.

Contoh: daftar nama, angka, atau barang belanjaan.

Joke: Ini kayak lo ngajak makan temen tanpa peduli mau makan apa. Yang penting ikut aja, urusan kenyang belakangan.

  1. Dua bintang ():** Semua data jadi dictionary. Cocok buat data dengan pasangan nama-nilai.

Contoh: biodata, spesifikasi barang, atau form pemesanan.

Joke: Ini kayak lo buka katering terus minta pelanggan kasih nama dan pesanan lengkap. Kalau cuma bilang "sate" tanpa nama, lo bakal bingung ngasih ke siapa, kan?

 

Gabungin Keduanya? Kenapa Nggak?

Lo juga bisa pakai *args dan **kwargs barengan di satu fungsi. Tapi, ada aturan main: *args harus muncul lebih dulu sebelum **kwargs. Python itu tegas soal urutan, bro. Kalau nggak, bakal error, dan lo bakal bengong kayak salah masuk kelas.

Contoh:

def party_info(*peserta, **detail_acara):
    print("Peserta Party:")
    for nama in peserta:
        print(f"- {nama}")
    print("\nDetail Acara:")
    for key, value in detail_acara.items():
        print(f"{key.capitalize()}: {value}")


party_info(
    "Dani", "Lita", "Fahmi",
    lokasi="Hotel Indonesia",
    tanggal="31 Desember",
    dresscode="Formal"
)

Outputnya:

Peserta Party: 
- Dani 
- Lita 
- Fahmi 
Detail Acara: 
Lokasi: Hotel Indonesia 
Tanggal: 31 Desember 
Dresscode: Formal

Gampang, bro! Pake satu bintang (*args) kalau lo cuma butuh data simpel kayak daftar nama atau angka. Tapi kalau lo butuh data yang lebih detail dengan nama-nilai, kasih dua bintang (**kwargs).

Ingat:

*args: "Semua masuk, nggak peduli siapa."

**kwargs: "Masuk, tapi kasih identitas lengkap!"

Semoga lo makin paham dan makin enjoy pake Python. Kalau masih bingung, tenang aja, Python itu kayak relationship—perlu waktu buat ngerti, tapi pas udah ngerti, lo bakal susah move on!

 

Contoh Gabungan *args dan kwargs

Gimana kalau lo butuh keduanya? Bisa banget, bro! Nih contohnya:

def event_info(*peserta, **detail_event):
    print("Daftar Peserta:")
    for orang in peserta:
        print(f"- {orang}")
    print("\nDetail Event:")
    for key, value in detail_event.items():
        print(f"{key.capitalize()}: {value}")


event_info(
    "Lutfi", "Nisa", "Joko",
    nama_event="Hackathon 2024",
    lokasi="Jakarta",
    tanggal="15 Januari 2024"
)

Output:

Daftar Peserta: 
- Lutfi 
- Nisa 
- Joko 
Detail Event: 
Nama_event: Hackathon 2024 
Lokasi: Jakarta 
Tanggal: 15 Januari 2024

 

Penggunaan di Dunia Nyata

Kegunaan *args dan **kwargs ini luas banget, bro! Dari bikin fungsi untuk email blast sampai kalkulasi data. Contoh lainnya: bikin fungsi menghitung rata-rata nilai.

def hitung_rata(*nilai):
    jumlah = sum(nilai)
    banyak = len(nilai)
    return jumlah / banyak


print(hitung_rata(90, 80, 70, 85))

Output:

81.25

 

Atau misalnya lo bikin aplikasi pemesanan tiket:

def pesan_tiket(*penumpang, **detail_pesanan):
    print("Penumpang:")
    for nama in penumpang:
        print(f"- {nama}")
    print("\nDetail Pemesanan:")
    for key, value in detail_pesanan.items():
        print(f"{key.capitalize()}: {value}")


pesan_tiket(
    "Aisyah", "Rahmat", "Dedi",
    tujuan="Bali",
    tanggal="1 Februari 2024",
    kelas="Ekonomi"
)

Output:

Penumpang: 
- Aisyah 
- Rahmat 
- Dedi 


Detail Pemesanan: 
Tujuan: Bali 
Tanggal: 1 Februari 2024 
Kelas: Ekonomi

 

Kesimpulan

*args dan **kwargs itu fitur wajib tahu buat programmer Python, apalagi kalau lo sering bikin fungsi dinamis yang fleksibel. Dengan memahami dua fitur ini, lo bakal lebih produktif dan kode lo bakal lebih elegan.

Jadi, bro, kalau lo belum eksplorasi *args dan **kwargs di proyek Python lo, coba deh sekarang. Siapa tahu lo bakal bilang, "Wah, ini fitur Python yang gue cari-cari!"

Series: Python
Published on February 13, 2025
Last updated on March 18, 2025

If you like this post and want to support us, you can support us via buymeacoffee or trakteer.