Apa Maksud dari *args dan kwargs pada Python?

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

Apa Maksud dari *args dan kwargs pada Python?

id9 min read • 3527 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
  1. Pengertian dan Kegunaan Bahasa Pemrograman Python
  2. Phyton 1 : Tutorial Pengenalan Dasar
  3. Phyton 2 : Macam Penulisan Sintaks
  4. Phyton 3 : Konsep Variabel dan Data
  5. Phyton 4 - Cara Mengambil Input dan Output
  6. Phyton 5 : Jenis-jenis Operator
  7. Phyton 6 - Percabangan
  8. Phyton 7 - Perulangan
  9. Phyton 8 - Struktur Data List
  10. 4 Variasi Fungsi Print () Pada Phyton
  11. Tutorial Python: Struktur Data Dictionary
  12. Phyton 9 - Struktur Data Tuple
  13. Phyton 9 : Struktur Data Tuple Part 2
  14. 5 Variasi Coding Python dengan Fungsi Concatenate, Yuk, Coba
  15. PyScript: Masa Depan Python di Browser ?
  16. 7 Hal Dasar yang Harus Diketahui Tentang Dictionary pada Python
  17. Memahami Fungsi dan Prosedur pada Python
  18. 6 Proyek Coding Python untuk Meningkatkan Portofolio Anda
  19. Tutorial Python: Membaca dan Menulis File dengan Lebih Mendalam
  20. Cara Baca Dan Parse File CSV di Python
  21. 7 Teknik Membuat Dictionary di Python dengan Data dari Berbagai Sumber
  22. 5 Kesalahan Umum dalam Menggunakan Dictionary di Python dan Cara Menghindarinya
  23. Belajar Python: Proses Data JSON dari File dan API Web
  24. Belajar Python: Buat Fungsi Dengan Lambda Expression
  25. Apa Maksud dari *args dan kwargs pada Python?
  26. Tutorial Membuat 3 Jenis Kalkulator Dengan Python
  27. Panduan Lengkap: Cara Menghapus Item di List Python Tanpa Drama
  28. Cara Bangun Dashboard di Jupyter Pakai Solara
  29. 6 Perintah pip yang Harus Diketahui Setiap Developer Python
  30. Panduan Lengkap Menggunakan pip: Manajer Paket Python yang Wajib Dikuasai
  31. Rekomendasi 6 Framework Terbaik untuk Python: Dari Santai Sampai Superhero!
  32. Benar Nggak Sih Python Ramah untuk Programmer Pemula?
  33. Optimasi Performa Perbandingan Dokumen di Python: Ketika CPU Lo Kerja Rodi!
  34. Mengupas Tuntas Cara Mengiterasi Dictionary di Python: Panduan Lengkap yang Gak Bikin Pusing!
  35. 5 Proyek AI Seru yang Bisa Lo Bangun Weekend Ini dengan Python
  36. Rust vs Python: Duel Sengit Bahasa Pemrograman! Mana yang Cocok Buat Lo?
  37. 6 Trik Python Terbaru 2025 yang Wajib Dicoba Programmer
  38. Tutorial Lengkap Membuat News Aggregator Menggunakan Python
  39. Stop Nulis Function Python Kayak Gini, Bro!
  40. 7 Python Decorators yang Bikin Kode Lo Makin Canggih
  41. Trik Python debugging yang wajib lo coba.
  42. Membangun List di Python: Filosofi, Teknik, dan Tips Anti-Kudet
  43. DERET FAKTORIAL: SI "BAHAN VIRAL" MATEMATIKA YANG BIKIN KODE LO NAIK LEVEL!
  44. Project Python Seru: Bikin Script Otomatisasi Pengorganisir File (Biar Folder Download Nggak Kayak Gudang)
  45. Automating Email Sending Via Phyton – Biar Jempol Lo Pensiun Dini
  46. Project 2: Automating Web Scraping for Data Collection dengan Python
  47. Automatisasi Tugas GUI dengan PyAutoGUI
  48. Cara Lama vs Cara Kekinian: Belajar dataclass Python
  49. Automatisasi Laporan PDF dengan Python
  50. Membongkar Rahasia field() di Python: Kendali Penuh atas Dataclass
  51. Praktik Lanjutan Menulis Kode Python yang Bersih dan Ramah Pemula
  52. Python Function Annotations: Fitur Keren yang Sering Diremehkan, Padahal Bikin Kamu Terlihat Programmer Cerdas
  53. Python Keyword Arguments: Panduan Bad Boy Buat Programmer Biar Nggak Salah Urus Function
  54. Belajar Fungsi Tanpa Parameter Python dari Nol: Panduan Lengkap Buat Pemula Sampai Nyantol di Kepala
  55. Tutorial Coding: Keluar dari Plateau of False Competence di Python
  56. Plotting Graph Menggunakan Seaborn di Python
  57. Mutable vs Immutable Objects di Python: Konsep Dasar yang Sering Diremehkan
  58. Python time.sleep() – Cara Mudah Memberi Jeda pada Program Kamu
  59. Mengapa Saya Berhenti Menggunakan Class di Python (Dan Apa yang Saya Gunakan Sebagai Gantinya)
  60. Different Delay Time of Python sleep() – Mengatur Jeda Sesuai Kebutuhan Program
  61. Mengenal Python math Module: Panduan Lengkap untuk Operasi Matematika di Python
Published on February 13, 2025
Last updated on June 03, 2026

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