*Args Dan **Kwargs Di Python
*args
Sintaks khusus *args
pada fungsi di Python dipakai untuk melewatkan sembarang jumlah argumen ke fungsi. *args
ini dipakai untuk melewatkan satu atau beberapa argumen non kata kunci.
Sintaks menggunakan tanda *
untuk mendapat sembarang jumlah argumen. Nama args mampu saja diganti dengan nama lain, hanya saja yang umum dipakai adalah args
.
*args
mengizinkan kita untuk memasukkan beberapa argumen yang jumlahnya tidak ditentukan.
Sebagai contoh: kita ingin membuat fungsi yang mendapat sejumlah bilangan, dan mengalikannya satu persatu. Ini mampu menggunakan *args
.
Dengan menggunakan tanda *, variabel yang diasosiasikan dengan * menjadi iterable, yang artinya mampu kita iterasikan dan jadikan input untuk fungsi orde yang lebih tinggi mirip map
, filter
, dan lain sebagainya
Contoh penggunaan *args:
# Program python untuk penggunaan *args
def test(arg1, *argv):
print "argumen pertama :", arg1
for arg in argv:
print "Argumen berikutnya lewat *argv :", arg
test('Hello', 'Welcome', 'to', 'Pythonindo', 'man')
Output
argumen pertama : Hello
Argumen berikutnya lewat *argv : Welcome
Argumen berikutnya lewat *argv : to
Argumen berikutnya lewat *argv : Pythonindo
Argumen berikutnya lewat *argv : man
**kwargs
Sintaks khusus **kwargs
dipakai untuk melewatkan sembarang jumlah argumen yang menggunakan kata kunci ke fungsi. Kita menggunakan dua tanda bintang di sini.
Argumen ber-kata kunci adalah argumen dimana kita melewatkan argumen berpasangan key dan value.
Kita mampu menyamakan kwargs
ini dengan dictionary. Kita mampu mengiterasikan kwargs dengan menggunakan kata kuncinya.
def hello(**kwargs):
if kwargs is not None:
for key, value in kwargs.iteritems():
print "%s == %s" %(key, value)
Output
>>> hello(name = 'Budi Alam')
name = Budi Alam
Menggunakan *args dan **kwargs
Berikut ini adalah pola penggunaan *args dan **kwargs.
test(arg1, arg2, arg3):
print("arg1:", arg1)
print("arg2:", arg2)
print("arg3:", arg3
Output
# dengan *args
>>> args = ("hey", 14, "joey")
>>> test(*args)
arg1: hey
arg2: 14
arg3: joey
# dengan **kwargs:
>>> kwargs = {"arg1" : "hey", "arg2" : 14, "arg3" : "joey"}
>>> testify(**kwargs)
arg1 : hey
arg2 : 14
arg3 : joey