Apa itu args pada python?

Ketika anda memperlajari kode pada bahasa pemrograman python pasti menemukan variable
In [5]: komisi[40,60]
Out[5]: 5.0
0 atau
In [5]: komisi[40,60]
Out[5]: 5.0
1 ini menjadi parameter dari suatu fuction [fungsi] dalam suatu program. dan terheran sebenarnya variable apa ini?!

In [5]: komisi[40,60]
Out[5]: 5.0
0 dan
In [5]: komisi[40,60]
Out[5]: 5.0
1

Kedua parameter ajaib ini adalah sebuah fungsonal parameter,

In [5]: komisi[40,60]
Out[5]: 5.0
0adalah arguments dan
In [5]: komisi[40,60]
Out[5]: 5.0
1 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

In [5]: komisi[40,60]
Out[5]: 5.0
0 dan
In [5]: komisi[40,60]
Out[5]: 5.0
1 yang paling penting adalah tanda *[asterik] dan ** [asterik ganda]. anda bisa saja mengganti nama variablenya, semisal menjadi
In [5]: komisi[40,60]
Out[5]: 5.0
8 atau
In [5]: komisi[40,60]
Out[5]: 5.0
9


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


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
In [5]: komisi[40,60]
Out[5]: 5.0
0 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.0
Dengan
In [5]: komisi[40,60]
Out[5]: 5.0
0 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
In [5]: komisi[40,60]
Out[5]: 5.0
1 :

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 Gudeg
Jika
In [5]: komisi[40,60]
Out[5]: 5.0
0 menyimpan kedalam type tuple, maka kalau
In [5]: komisi[40,60]
Out[5]: 5.0
1 meyimpan parameter keyword kedalam bentuk dictionary. Artinya ada pasangan antara 'key' : 'value' . Pada contoh diatas saya membuat fungsi
def komisi [a,b,c,d]:
    return sum[[a,b,c,d]]*0.05

komisi[40,60,80,90]
5 yang akan mencetak nama dan makanan yang dia sukai dengan beberapa parameter atau sebanyak parameter keyword yang kita mau.

Python memperbolehkan untuk memiliki fungsi dengan berbagai macam argumen. Menggunakan *args sebagai sebuah parameter fungsi memungkinkan kita untuk melewatkan sejumlah argumen yang berubah-ubah pada fungsi tersebut. Argumen-argumen dapat diakses sebagai tuple args di dalam fungsi.

def fungsi[named_arg, *args]:
    print[named_arg]
    print[args]

fungsi[1,2,3,4,5]
=====>
 1
 [2, 3, 4, 5] 
=====>

Parameter *args harus diletakkan setelah named parameter. Named parameter dapat dibuat opsional dengan memberikan nilai default. Parameter *args juga harus diletakkan sebelum parameter yang memiliki nilai default.

def function[x, y, makanan="nasi"]:
    print[makanan]

function[1, 2]
function[3, 4, "telur"]
=====>
 nasi
 telur 
=====>

**kwargs memungkinkan kita untuk menangani named argument yang belum di definisikan sebelumya. Argumen keyword mengembalikan sebuah dictionary dimana key adalah nama argumen dan nilai nya adalah nilai argumen.

def fungsi[x, y=7, *args, **kwargs]:
    print[kwargs]

fungsi[2,3,4,5,6,a=7,b=8]
=====>
 {'a': 7, 'b': 8} 
=====>

a dan b adalah nama argumen yang kita lewatkan ke fungsi. Argumen yang dikembalikan oleh **kwargs tidak termasuk di dalam *args.

Bài mới nhất

Chủ Đề