Dalam artikel ini, kita akan belajar mengenai Python * args dan ** kwargs, penggunaan dan fungsinya dengan contoh.
Dalam pengaturcaraan, kami menentukan fungsi untuk membuat kod yang dapat digunakan kembali yang melakukan operasi serupa. Untuk melakukan operasi itu, kita memanggil fungsi dengan nilai tertentu, nilai ini disebut argumen fungsi di Python.
Kami mengesyorkan anda membaca Argumen Fungsi Python dan Fungsi Python.
Katakan, kita menentukan fungsi untuk penambahan 3 nombor.
Contoh 1: Fungsi untuk menambah 3 nombor
def adder(x,y,z): print("sum:",x+y+z) adder(10,12,13)
Apabila kita menjalankan program di atas, outputnya akan menjadi
jumlah: 35
Dalam program di atas kita adder()
berfungsi dengan tiga argumen x, y dan z. Apabila kita melewati tiga nilai sambil memanggil adder()
fungsi, kita mendapat jumlah dari 3 nombor sebagai output.
Mari kita lihat apa yang berlaku apabila kita melewati lebih dari 3 argumen dalam adder()
fungsi tersebut.
def adder(x,y,z): print("sum:",x+y+z) adder(5,10,15,20,25)
Apabila kita menjalankan program di atas, outputnya akan menjadi
TypeError: adder () mengambil 3 argumen kedudukan tetapi 5 diberikan
Dalam program di atas, kami menyampaikan 5 argumen ke adder()
fungsi dan bukannya 3 argumen kerana kami mendapat TypeError
.
Pengenalan kepada * args dan ** kwargs di Python
Di Python, kita dapat menyampaikan sejumlah argumen ke fungsi menggunakan simbol khas. Terdapat dua simbol khas:
- * args (Hujah Tanpa Kata Kunci)
- ** kwargs (Hujah Kata Kunci)
Kami menggunakan * args dan ** kwargs sebagai argumen ketika kami tidak pasti mengenai jumlah argumen yang akan diteruskan dalam fungsi.
Python * berpendapat
Seperti dalam contoh di atas, kita tidak pasti mengenai jumlah argumen yang dapat diteruskan ke fungsi. Python mempunyai * args yang membolehkan kita meneruskan pemboleh ubah argumen bukan kata kunci untuk berfungsi.
Dalam fungsi, kita harus menggunakan tanda bintang *
sebelum nama parameter untuk melewati argumen panjang berubah. Argumen dilewatkan sebagai tuple dan argumen lulus ini membuat tuple di dalam fungsi dengan nama yang sama dengan parameter tidak termasuk tanda bintang *
.
Contoh 2: Menggunakan * args untuk menyampaikan argumen panjang berubah 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)
Apabila kita menjalankan program di atas, outputnya akan menjadi
Jumlah: 8 Jumlah: 22 Jumlah: 17
Dalam program di atas, kami menggunakan * num sebagai parameter yang membolehkan kami meneruskan senarai argumen panjang berubah ke adder()
fungsi. Di dalam fungsi, kita mempunyai gelung yang menambahkan argumen yang dilalui dan mencetak hasilnya. Kami melewati 3 tupel berbeza dengan panjang berubah sebagai argumen untuk fungsi tersebut.
Python ** kwargs
Python meneruskan argumen bukan kata kunci panjang berubah untuk berfungsi menggunakan * args tetapi kami tidak dapat menggunakannya untuk meneruskan argumen kata kunci. Untuk masalah ini, Python telah mendapat penyelesaian yang disebut ** kwargs, ini membolehkan kita meneruskan panjang argumen kata kunci ke fungsi tersebut.
Dalam fungsi, kami menggunakan tanda bintang dua **
sebelum nama parameter untuk menunjukkan jenis argumen ini. Argumen disahkan sebagai kamus dan argumen ini menjadikan kamus dalam berfungsi dengan nama yang sama dengan parameter tidak termasuk tanda bintang dua **
.
Contoh 3: Menggunakan ** kwargs untuk menyampaikan argumen kata kunci berubah 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)
Apabila kita menjalankan program di atas, outputnya akan menjadi
Jenis data argumen: Firstname adalah Sita Lastname adalah Sharma Umur adalah 22 Telefon adalah 1234567890 Jenis data argumen: Firstname adalah John Lastname adalah Wood E-mel adalah [email protected] Negara adalah Wakanda Umur 25 tahun Telefon adalah 9876543210
Dalam program di atas, kami memiliki fungsi intro()
dengan data ** sebagai parameter. Kami menyampaikan dua kamus dengan panjang argumen berubah ke intro()
fungsi. Kami mempunyai intro()
fungsi loop dalam yang berfungsi pada data kamus lulus dan mencetak nilai kamus.
Perkara yang Perlu Diingat:
- * args dan * kwargs adalah kata kunci khas yang membolehkan fungsi mengambil argumen panjang berubah.
- * args melewati jumlah pemboleh ubah senarai argumen tanpa kata kunci dan operasi senarai yang boleh dilakukan.
- ** kwargs menyampaikan sebilangan pembolehubah kamus kata kunci untuk berfungsi di mana operasi kamus dapat dilakukan.
- * args dan ** kwargs menjadikan fungsinya fleksibel.