Ketika anda memperlajari kode pada bahasa pemrograman python pasti menemukan variable
*args
atau **kwargs
ini menjadi parameter dari suatu fuction (fungsi) dalam suatu program. dan terheran sebenarnya variable apa ini?!
*args
dan **kwargs
Kedua parameter ajaib ini adalah sebuah fungsonal parameter,
*args
adalah arguments dan **kwargs
adalah keyword arguments. dengan kedua parameter tsb kita dapat membuat function yang kita buat dapat menerima sejumlah parameter argumen dan parameter keyword secara arbitrary (sewenang wenang) tanpa menentukan predefined parameter sebelumnya.
Perlu diketahui pada
*args
dan **kwargs
yang paling penting adalah tanda *(asterik) dan ** (asterik ganda). anda bisa saja mengganti nama variablenya, semisal menjadi *var
atau **vars.
Contoh :
Function pada python
def komisi (a,b): return sum((a,b))*0.05 komisi(40,60)
In [5]: komisi(40,60) Out[5]: 5.0
function untuk mengembalikan nilai sejumlah 5% dari penjumlahan dua buah nilai. terdapat dua buah parameter a dan b, didalam function tsb terdapat operasi menjulahkan nilai dari dua paramter tsb kemudian dikalikan dengan 0.05, sehingga jika input nilai parameter a = 40 dan b = 60 maka nilai yang dikembalikan fuction adalah 5.0
So far ga ada masalah ya...hehe
So far ga ada masalah ya...hehe
Selanjutnya bagaimana jika kita memiliki tidak hanya dua tapi lebih banyak nomor atau keyword yang akan dilewatkan kedalam fungsi tsb.
Mungkin hanya tinggal menambahkan lebih banyak variable parameter pada function tsb (a,b,c,d dan seterusnya) seperti ini :
def komisi (a,b,c,d): return sum((a,b,c,d))*0.05 komisi(40,60,80,90)
In [11]: komisi(40,60,80,90) Out[11]: 13.5
Muncul masalah baru, bagaimana jika kita tidak tahu berapa jumlah parameter yang akan dilewatkan oleh user sebelumnya?
Maka digunakanlah
*args
untuk melewatkan parameter dalam type tuple non-keyword menjadi argumen suatu fuction. contoh :def komisi (*args): return sum((args))*0.05 komisi(40,60,80,90,100,60,10,40)
In [15]: komisi(40,60,80,90,100,60,10,40) Out[15]: 24.0Dengan
*args
kita bisa melewatkan berapapun jumlah dari parameter yang kita mau tanpa kita tentukan jumlah dari parameter sebelumnya.Lalu bagaimana dengan **kwargs
Contoh penggunaan functional parameter
**kwargs
:def makan(**kwargs): for orang, makan in kwargs.items(): print(f"{orang} suka makan {makan}") makan(Saya='bubur',Budi="Nasi padang", Tono="Bakso", Mawar="Gudeg")
[Out] Saya suka makan bubur Budi suka makan Nasi padang Tono suka makan Bakso Mawar suka makan GudegJika
*args
menyimpan kedalam type tuple, maka kalau **kwargs
meyimpan parameter keyword kedalam bentuk dictionary. Artinya ada pasangan antara 'key' : 'value' . Pada contoh diatas saya membuat fungsimakan()
yang akan mencetak nama dan makanan yang dia sukai dengan beberapa parameter atau sebanyak parameter keyword yang kita mau.contoh penggunaan
**kwargs
dalam bentuk class :class Car: def __init__(self,**kwargs): self._Data=kwargs def GetType(self): return self._Data["Type"] def GetModel(self): return self._Data["Model"] def GetPrice(self): return self._Data["Price"] def GetMilesDrive(self): return self._Data["MilesDrive"] def GetOwner(self): return self._Data["Owner"] def GetCurrentPrice(self): return self.GetPrice()- ( self.GetMilesDrive()*10) def main(): myCar= Car(Type="BMW",Model=2015,Price=26000,MilesDrive=15,Owner="Hussein") CurrentPrice=myCar.GetCurrentPrice() print("{}'s Car, New price {}".format(myCar.GetOwner(),CurrentPrice)) AlexCar= Car(Type="GMC",Model=2017,Price=28000,MilesDrive=5,Owner="Alex") CurrentPrice=AlexCar.GetCurrentPrice() print("{} 's Car, New price {}".format(AlexCar.GetOwner(),CurrentPrice)) if __name__ == '__main__':main()
[Out] Hussein's Car, New price 25850 Alex 's Car, New price 27950Sekian, terima kasih ^^
No comments:
Post a Comment