author Ahmad Muhardian

Apa Maksud dari *args dan **kwargs pada Python?


Python Args dan Kwargs

*args dan **kwargs sebenarnya adalah sebuah variabel. Kadang juga disebut dengan magic variable, karena kemampuannya yang aneh. 😄

Variabel ini memiliki kemampuan khusus karena ada tanda bintang (*) di depannya.

Kalau tidak ada itu…

…maka akan menjadi variabel yang biasa-biasa saja.

Lalu bagaimana cara menggunakan dalam program?

Kapan waktu yang tepat menggunakannya?

Apa bedanya *args dan **kwargs?

Mari kita bahas.

Kapan *args dan **kwargs digunakan?

Jika kita mencoba membuat variabel dengan nama *args dan **kwargs, maka akan terjadi error.

Error saat membuat variabel args

Kenapa bisa begitu?

Karena ada simbol bintang (*) di depannya. Sedangkan pada aturan penulisan variabel di Python, kita tidak dibolehkan menggunakan simbol di depan, kecuali underscore (_).

Lalu di mana penggunaannya?

Variabel *args dan **kwargs digunakan sebagai parameter pada fungsi.

Contoh:

# Pembuatan fungsi
def panggil(*nama):
    print "daftar orang yang dipanggil:"
    for orang in nama:
        print orang

# pemanggilan fungsi
panggil("dian", "deni", "agus")
Catatan: nama *args dan **kwargs bukanlah sesuatu yang baku. Kita juga bisa membuatnya sesuka hati seperti *nama, **nama, *buku, dsb.

Hasil outputnya:

daftar orang yang dipanggil:
dian
deni
agus

Pada contoh di atas, kita memberikan tiga paramter ke dalam fungsi panggil().

panggil("dian", "deni", "agus")

Sedangkan pada pembuatanya kita hanya menggunakan satu parameter, yaitu: *nama.

Kok bisa?

Inilah ajaibnya.

Saat kita menambahkan tanda bintang (*) di depan parameter, kita bisa memberikan parameter berapapun yang kita inginkan saat pemanggilan.

panggil("dian", "deni", "agus")
panggil("toni", "amir", "dian", "deni", "agus")
panggil("dion", "beni", "heri", "hadi")

Jadi, kapan waktu yang tepat menggunakan *args dan **kwargs?

Waktu yang tepat menggunakan *args dan **kwargs adalah saat kita membuat fungsi dan jumlah parameternya tidak jelas alias tidak pasti (not fixed).

Biasanya kan kita membuat seperti ini:

def colek(nama1, nama2, nama2):
    pass

Fungsi tersebut hanya mampu menerima tiga parameter saja.

colek("eko", "rian", "dwi")

# coba berikan 1 parameter pasti akan error
colek("anto")

Lalu bagaimana kalau ingin lebih dari tiga, kadang juga kita ingin satu saja?

di sanalah kita harus menggunakan *args dan **kwargs.

Apa Perbedaan dari *args dan **kwargs?

Perbedaan yang paling terlihat adalah dari jumlah tanda bintangnya.

*args menggunakan satu tanda bintang, sedangkan **kwargs menggunakan dua tanda bintang.

Antara tanda bintang satu dan dua, itu memiliki perbedaan:

  • * artinya akan membuat parameter menjadi tuple.
  • ** artinya akan membuat parameter menjadi dictionary.

Belum tahu tentang apa itu tuple dan dictionary?

Silahkan baca:

  • Mengenal Struktur data Tuple di Python (coming soon)
  • Mengenal Struktur data Dictionary di Python (coming soon)

Antara *args dan **kwargs, cocoknya dipakai di mana?

Sebenarnya tergantung dari kasusnya.

Saat kita menggunakan **kwargs kita diharuskan membuat keyword atau kata kunci ke dalam parameternya.

Seperti ini:

panggil(nama="petanikode")

Untuk lebih jelasnya, silahkan perhatikan contoh program berikut:

# membuat fungsi dengan parameter *args
def kirim_sms(*nomer):
    print nomer

# membuat fungsi dengan parameter **kwargs
def tulis_sms(**isi):
    print isi

# Pemanggilan fungsi *args
kirim_sms(123, 888, 4444)

# pemanggilan fungsi **kwargs
tulis_sms(tujuan=123, pesan="apa kabar")

Hasil outputnya:

(123, 888, 4444)
{'tujuan': 123, 'pesan': 'apa kabar'}

Kita juga bisa memanggil fungsinya seperti ini:

# siapkan parameternya
list_nomer = [123, 888, 4444]
isi_sms = {'tujuan': 4444, 'pesan': 'mau daftar pak'}

# pemanggilan fungsi
kirim_sms(*list_nomer)
tulis_sms(**isi_sms)

Hasil ouutputnya juga akan sama.

Contoh Kasus di Dunia Nyata

Bagaimana contoh penggunaan *args dan **kwargs di dunia nyata?

Seperti yang telah kita ketahui, dengan *args dan **kwargs kita bisa membuat parameter fungsi menjadi dinamis.

Salah satu contoh kasus penerapannya di dunia nyata: Fungsi untuk menghitung nilai rata-rata.

Karena data yang akan kita hitung nilai rata-ratanya bersifat dinamis, maka kita harus menggunakan *args atau **kwargs.

Contoh programnya:

# membuat fungsi rata-rata
def rata_rata(*data):
    banyak_data = len(data)
    jumlah_data = sum(data)
    nilai_rata_rata = float(jumlah_data) / float(banyak_data)
    return nilai_rata_rata

print rata_rata(2,4,1,2,4,1,2,3,4,5,1,8,2)

Fungsi len() adalah fungsi untuk menghitung banyak data yang terdapat dalam tuple atau list. Sedangkan fungsi sum() adalah fungsi untuk menjumlahkan semua data-nya.

Selanjutnya kita terapkan rumus nilai rata-rata:

rata_rata = jumlah_data / banyak_data

Hasil outputnya:

3.0

Akhir Kata…

Itulah sedikit penjelasan tentang *args dan **kwargs pada Python. Semoga dapat dipahami.

Kalau masih bingung, silahkan tanyakan melalui komentar.

Baca Juga ini

Belajar Python: Mengenal Struktur Data List

Belajar Python: Mengenal Struktur Data List

Bagaimana caranya menyimpan banyak data dalam satu veriabel? Jawabannya menggunakan List. List adalah struktur data pada python yang mampu menyimpan lebih dari satu data, seperti array. Pada kesempatan ini, kita akan membahas cara menggunakan list di Python dari yang paling sederhana sampai yang sedikit kompleks. Apa saja poin-poin yang akan dipelajari? Cara Membuat List dan Mengisinya Cara Mangambil nilai dari List Cara Menambahkan dan Menghapus isi List Operasi pada List List multi dimensi Selamat menyimak…

Mengenal Virtualenv: Apa Saja yang Harus Kamu Ketahui?

Mengenal Virtualenv: Apa Saja yang Harus Kamu Ketahui?

Waktu awal-awal belajar django, saya sedikit ‘dipusingkan’ dengan Virtual Environment (virtualenv). Banyak tutorial menyarankan menggunakan virtualenv. Bahkan tidak hanya untuk django saja. Sepertinya virtualenv adalah tools yang harus digunakan pada pengembangan aplikasi Python. Apa itu vritualenv? Kenapa kita harus menggunakan virtualenv? Bagaimana cara menggunakan vritualenv? Mari kita bahas… Apa itu Virtualenv?Vritualenv adalah tools untuk membuat lingkungan python virtual yang terisolasi. Terisolasi artinya tertutup dan tidak bisa diakses dari dunia luar.

Belajar Python: Cara Membaca dan Menulis File di Python

Belajar Python: Cara Membaca dan Menulis File di Python

Baca dan tulis file adalah teknik dasar yang harus dipahami dalam pemrograman Python, karena banyak digunakan untuk pengolahan dan pemerosesan file. Paham cara membaca dan menulis file dengan Python akan membuatmu mampu membuat aplikasi yang bisa mengambil dan menyimpan data ke file. Selain itu juga, kamu akan lebih mudah memahami beberapa materi Python selanjutnya, seperti baca dan parsing file JSON, XML, CSV, XLS, dan sebagainya. Ada banyak sekali tipe file pada komputer…seperti, dokumen, video, gambar, audio, arsip, dll.

Belajar Python: Cara Mengambil Input dan Menampilkan Output

Belajar Python: Cara Mengambil Input dan Menampilkan Output

Input adalah masukan yang kita berikan ke program. Program akan memprosesnya dan menampilkan hasil outputnya. Input, proses, dan output adalah inti dari semua program komputer. Pada tulisan ini, kita akan belajar cara mengambil input dan menampilkan output untuk program berbasis teks. Mari kita mulai… Cara Mengambil Input dari KeyboardPython sudah menyediakan fungsi input() dan raw_input() untuk mengambil inputan dari keyboard. Cara pakainya:

5 Aturan Penulisan Sintaks Python yang Harus dipatuhi

5 Aturan Penulisan Sintaks Python yang Harus dipatuhi

Ada beberapa aturan dasar penulisan sintaks Python yang harus dipatuhi agar tidak terjadi error dan kode tersusun rapi