Apa itu *args dan **kwargs
Di Python,*args
dan **kwargs
adalah istilah yang umum digunakan untuk melewatkan jumlah argumen yang bervariasi ke dalam sebuah fungsi. Keduanya adalah sintaks yang khusus yang memungkinkan Anda untuk melewatkan jumlah argumen yang bervariasi ke dalam sebuah fungsi, tanpa harus secara eksplisit menentukannya di dalam definisi fungsi.
*args
singkatannya adalah "argumen" dan digunakan untuk melewatkan jumlah argumen posisi yang bervariasi ke dalam sebuah fungsi. Di sisi lain, **kwargs
singkatannya adalah "argumen kata kunci" dan digunakan untuk melewatkan jumlah argumen kata kunci yang bervariasi ke dalam sebuah fungsi.
Menggunakan *args
dan **kwargs
dapat sangat berguna ketika Anda ingin membuat fungsi yang fleksibel yang dapat menangani jumlah argumen atau argumen kata kunci yang berbeda.
Cara Menggunakan *args
Untuk menggunakan *args
, cukup masukkan tanda asterisk sebelum nama parameter dalam definisi fungsi. Ini memberitahu Python bahwa argumen posisi tambahan harus dikumpulkan menjadi tuple dan dilewatkan ke dalam fungsi sebagai nilai parameter.
Berikut adalah contoh dari fungsi yang menerima *args
:
def sum_numbers(*args):
total = 0
for number in args:
total += number
return total
Dalam contoh ini, fungsi sum_numbers
menerima argumen apa saja dan menjumlahkannya. Misalnya, Anda dapat memanggil fungsi ini dengan jumlah argumen yang berbeda:
print(sum_numbers(1, 2, 3)) # Output: 6
print(sum_numbers(1, 2, 3, 4, 5)) # Output: 15
print(sum_numbers(2, 4, 6, 8, 10, 12)) # Output: 42
Seperti yang Anda lihat, *args
memungkinkan fungsi untuk menangani jumlah argumen yang bervariasi tanpa harus menentukan setiap argumen secara eksplisit dalam definisi fungsi.
Cara Menggunakan **kwargs
Untuk menggunakan**kwargs
, Anda perlu mendefinisikan parameter dengan dua tanda asterisk (**
) pada tanda tangan fungsi. Parameter ini kemudian akan menerima kamus dari semua argumen kata kunci yang diteruskan ke fungsi.
Berikut contoh cara menggunakan **kwargs
di Python:
def my_function(\*\*kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
my_function(name="John", age=30, city="New York")
Pada contoh di atas, kita mendefinisikan fungsimy_function
yang mengambil sejumlah argumen kata kunci menggunakan sintaks **kwargs
. Fungsi kemudian melakukan loop pada kamus argumen kata kunci menggunakan metode .items()
, mencetak setiap pasangan kunci-nilai.
Ketika kita memanggil fungsi dengan my_function(name="John", age=30, city="New York")
, hasil keluarannya akan menjadi:
name: John
age: 30
city: New York
You can also pass a dictionary to a function that uses **kwargs
by using the double asterisk (**
) syntax to unpack the dictionary. Here's an example:
def my_function(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
my_dict = {"name": "John", "age": 30, "city": "New York"}
my_function(**my_dict)
Pada contoh ini, kita mendefinisikan kamus my_dict
dengan tiga pasangan kunci-nilai. Kemudian kita memanggil my_function
dengan sintaks asterisk ganda (**
) untuk membuka kamus dan meneruskan isinya sebagai argumen kata kunci ke fungsi.
Ketika kita menjalankan kode, kita akan mendapatkan hasil yang sama seperti sebelumnya:
name: John
age: 30
city: New York