Pada artikel ini, kita akan belajar tentang Python * args dan ** kwargs, penggunaan dan fungsinya dengan contoh.
Dalam pemrograman, kami mendefinisikan fungsi untuk membuat kode yang dapat digunakan kembali yang melakukan operasi serupa. Untuk melakukan operasi itu, kita memanggil fungsi dengan nilai spesifik, nilai ini disebut argumen fungsi dengan Python.
Kami akan merekomendasikan Anda untuk membaca Fungsi Python dan Argumen Fungsi Python.
Misalkan, kita mendefinisikan fungsi untuk penambahan 3 angka.
Contoh 1: Fungsi untuk menjumlahkan 3 angka
def adder(x,y,z): print("sum:",x+y+z) adder(10,12,13)
Saat kita menjalankan program di atas, outputnya adalah
jumlah: 35
Pada program di atas kita memiliki adder()
fungsi dengan tiga argumen x, y dan z. Ketika kita melewatkan tiga nilai sambil memanggil adder()
fungsi, kita mendapatkan jumlah dari 3 angka sebagai outputnya.
Mari kita lihat apa yang terjadi ketika kita meneruskan lebih dari 3 argumen dalam adder()
fungsi tersebut.
def adder(x,y,z): print("sum:",x+y+z) adder(5,10,15,20,25)
Saat kita menjalankan program di atas, outputnya adalah
TypeError: adder () mengambil 3 argumen posisi tetapi 5 diberikan
Dalam program di atas, kami meneruskan 5 argumen ke adder()
fungsi alih-alih 3 argumen yang kami dapatkan TypeError
.
Pengantar * args dan ** kwargs dengan Python
Dengan Python, kita dapat mengirimkan sejumlah variabel argumen ke suatu fungsi menggunakan simbol khusus. Ada dua simbol khusus:
- * args (Argumen Non Kata Kunci)
- ** kwargs (Argumen Kata Kunci)
Kami menggunakan * args dan ** kwargs sebagai argumen ketika kami tidak yakin tentang jumlah argumen yang akan diteruskan dalam fungsi.
Python * args
Seperti pada contoh di atas, kami tidak yakin tentang jumlah argumen yang dapat diteruskan ke suatu fungsi. Python memiliki * args yang memungkinkan kita untuk meneruskan jumlah variabel dari argumen non kata kunci agar berfungsi.
Dalam fungsinya, kita harus menggunakan tanda bintang *
sebelum nama parameter untuk melewatkan argumen panjang variabel. Argumen tersebut diteruskan sebagai tupel dan argumen yang diteruskan ini membuat tupel di dalam fungsi dengan nama yang sama dengan parameter yang tidak termasuk tanda bintang *
.
Contoh 2: Menggunakan * args untuk meneruskan argumen panjang variabel ke fungsi
def adder(*num): sum = 0 for n in num: sum = sum + n print("Sum:",sum) adder(3,5) adder(4,5,6,7) adder(1,2,3,5,6)
Saat kita menjalankan program di atas, outputnya adalah
Jumlah: 8 Jumlah: 22 Jumlah: 17
Dalam program di atas, kami menggunakan * num sebagai parameter yang memungkinkan kami untuk mengirimkan daftar argumen panjang variabel ke adder()
fungsi. Di dalam fungsi, kita memiliki perulangan yang menambahkan argumen yang dilewatkan dan mencetak hasilnya. Kami melewati 3 tupel berbeda dengan panjang variabel sebagai argumen untuk fungsi tersebut.
Python ** kwargs
Python melewati panjang variabel argumen non kata kunci berfungsi menggunakan * args tetapi kami tidak dapat menggunakan ini untuk meneruskan argumen kata kunci. Untuk masalah ini Python memiliki solusi yang disebut ** kwargs, ini memungkinkan kita untuk melewatkan panjang variabel argumen kata kunci ke fungsi tersebut.
Dalam fungsinya, kami menggunakan tanda bintang ganda **
sebelum nama parameter untuk menunjukkan jenis argumen ini. Argumen diteruskan sebagai kamus dan argumen ini membuat fungsi kamus di dalam dengan nama sama dengan parameter tidak termasuk tanda bintang ganda **
.
Contoh 3: Menggunakan ** kwargs untuk meneruskan argumen kata kunci variabel ke fungsi
def intro(**data): print("Data type of argument:",type(data)) for key, value in data.items(): print("() is ()".format(key,value)) intro(Firstname="Sita", Lastname="Sharma", Age=22, Phone=1234567890) intro(Firstname="John", Lastname="Wood", Email="[email protected]", Country="Wakanda", Age=25, Phone=9876543210)
Saat kita menjalankan program di atas, outputnya adalah
Tipe data argumen: Nama depan adalah Sita Nama belakang Sharma Umur 22 Telepon 1234567890 Tipe data argumen: Nama depan adalah John Nama belakang Kayu Email adalah [email protected] Negara Wakanda Umur 25 Telepon adalah 9876543210
Pada program di atas, kita memiliki fungsi intro()
dengan ** data sebagai parameternya. Kami memberikan dua kamus dengan panjang argumen variabel ke intro()
fungsi. Kami memiliki intro()
fungsi for loop inside yang bekerja pada data kamus yang lewat dan mencetak nilai kamus.
Hal-hal untuk diingat:
- * args dan * kwargs adalah kata kunci khusus yang memungkinkan fungsi mengambil argumen panjang variabel.
- * args melewatkan nomor variabel dari daftar argumen non-kata kunci dan operasi daftar mana yang dapat dilakukan.
- ** kwargs melewati sejumlah variabel dari kamus argumen kata kunci untuk berfungsi di mana operasi kamus dapat dilakukan.
- * args dan ** kwargs membuat fungsinya menjadi fleksibel.