Tutorial Belajar Python Part 35: Pengertian Arbitrary Arguments (*args) Python

Masih membahas tentang cara pembuatan function dalam bahasa Python, kali ini kita masuk ke materi yang agak advanced, yakni tentang Pengertian Arbitrary Arguments yang sering ditulis sebagai *args.


Pengertian Arbitrary Arguments (*args) Python

Arbitrary arguments adalah istilah untuk menyebut jumlah argumen yang tidak bisa ditentukan atau berubah-ubah.

Sampai saat ini kita membuat fungsi yang hanya bisa menerima argumen dengan jumlah tetap, yakni sesuai dengan yang ditulis pada saat pendefenisian fungsi. Sebagai contoh, perhatikan fungsi berikut ini:

def sapa_teman(nama1, nama2, nama3):
  print("Halo",nama1)
  print("Halo",nama2)
  print("Halo",nama3)
  
sapa_teman("Alex","Nisa","Sari")

Hasil kode program:

Halo Alex
Halo Nisa
Halo Sari

Fungsi sapa_teman() di defenisikan dengan 3 parameter, yakni nama1, nama2 dan nama3. Pada saat pemanggilan fungsi di baris 6, ketiga parameter ini harus diisi. Jika kita memanggil fungsi sapa_teman() dengan 4 parameter, akan terjadi error:

def sapa_teman(nama1, nama2, nama3):
  print("Halo",nama1)
  print("Halo",nama2)
  print("Halo",nama3)
  
sapa_teman("Alex","Nisa","Sari","Risa")

Hasil kode program:

TypeError: sapa_teman() takes 3 positional arguments but 4 were given

Dengan menggunakan teknik arbitrary arguments, kita bisa membuat sebuah fungsi untuk menerima 3, 4 atau 100 argumen sekaligus. Caranya, buat satu parameter dengan tanda bintang di awal seperti berikut:

def sapa_teman(*args):
  print(args)
  print(type(args))
  
sapa_teman("Alex","Nisa","Sari","Risa")

Dalam contoh ini, fungsi sapa_teman() di definisikan dengan 1 parameter khusus bernama *args. Nama parameter boleh bebas, selama diawali dengan tanda bintang satu ” * “.

Dengan penulisan seperti ini, parameter *args akan menampung semua argumen yang ditulis pada saat pemanggilan fungsi tersebut dan disimpan dalam sebuah tuple.

Kode program diatas akan menampilkan hasil sebagai berikut:

<class 'tuple'>('Alex', 'Nisa', 'Sari', 'Risa')
<class 'tuple'>

Karena hasil akhirnya berbentuk tuple, maka kita bisa menggunakan perulangan untuk mengakses setiap element tuple. Berikut modifikasi dari kode program sebelumnya:

def sapa_teman(*nama):
  for i in nama:
    print("Halo",i)
  
sapa_teman("Alex","Nisa","Sari","Risa","Siska","Rudi","Joko")

Hasil kode program:

Halo Alex
Halo Nisa
Halo Sari
Halo Risa
Halo Siska
Halo Rudi
Halo Joko

Kali ini terdapat tambahan perulangan for di dalam fungsi sapa_teman(). Perulangan for ini akan mengakses setiap element tuple lalu ditampilkan dengan perintah print. Fungsi sapa_teman() sekarang bisa menampung 1, 3, 10 bahkan 100 argument dan semuanya bisa di proses.

Perhatikan juga kalau kali ini saya menggunakan parameter *nama, bukan lagi *args. Dalam referensi atau tutorial tentang arbitrary arguments, nama parameter *args ini akan sering dipakai karena merupakan singkatan dari arguments.


Contoh Kode Program *args Python

Arbitrary arguments cocok dipakai untuk fungsi dengan tipe data argumen seragam, terutama yang melibatkan perhitungan matematika.

Sebagai contoh, berikut fungsi tambah() yang akan menambahkan semua argumen:

def jumlah(*args):
  hasil = 0
  for i in args:
    hasil += i
  return hasil
  
print( jumlah(5,7) )
print( jumlah(5,7,3,2) )
print( jumlah(5,7,3,2,8,2,1,3) )
print( jumlah(100, 200, 300, 400, 500) )

Hasil kode program:

12
17
31
1500

Dalam fungsi ini saya memakai perulangan for untuk menambah semua element tuple args, lalu hasilnya di kembalikan dengan perintah return.

Perintah hasil += i merupakan penulisan singkat dari hasil = hasil + i, dimana dalam setiap iterasi nilai i akan terus ditambah ke dalam variabel hasil.

Sebagai latihan, bisakah anda membuat fungsi rata2() untuk menghitung nilai rata-rata semua argumen yang ditulis pada saat pemanggilan fungsi tersebut?

Caranya kurang lebih sama seperti fungsi tambah() diatas, tinggal menambah perintah untuk membagi total nilai dengan jumlah argumen. Jumlah argumen bisa dicari dengan fungsi len() bawaan Python. Silahkan coba sebentar…

Baik, berikut kode program Python untuk mencari nilai rata-rata menggunakan arbitrary arguments:

def rata2(*args):
  hasil = 0
  for i in args:
    hasil += i
  return hasil / len(args)
  
print( rata2(5,7) )
print( rata2(5,7,3,2) )
print( rata2(5,7,3,2,8,2,1,3) )
print( rata2(100,200,300,400,500) )

Hasil kode program:

6.0
4.25
3.875
300.0

Selain nama fungsi, perbedaan dengan contoh sebelumnya hanya di baris return yang sekarang mengembalikan nilai return hasil / len(args). Perintah len(args) dipakai untuk menghitung total jumlah argumen.

Bahasa Python sebenarnya sudah memiliki fungsi bawaan untuk menghitung total sebuah tuple dengan fungsi sum(). Tapi tidak ada salahnya kita melatih logika membuat manual perhitungan ini dengan perulangan for.

Dalam tutorial belajar Python kali ini kita telah membahas tentang pengertian dan cara membuat arbitrary arguments, yang kadang disebut saja dengan nama argumen-nya, yakni *args.

Berikutnya akan dibahas tentang variasi lain dari arbitrary arguments, yakni Pengertian Arbitrary Keyword Arguments (**kwargs) dalam bahasa Python.

Add Comment