Cara Menggunakan *args dan **kwargs dalam Fungsi Python
Kuasai *args dan **kwargs dengan Python. Pelajari cara menulis fungsi fleksibel dengan argumen posisi dinamis dan kata kunci, membongkar koleksi, dan membuat fungsi wrapper.
Ikhtisar
Dengan Python, Anda sering kali perlu merancang fungsi yang dapat menerima sejumlah argumen yang bervariasi. Misalnya, fungsi yang menghitung jumlah bilangan bulat berapa pun, atau fungsi yang mencatat metadata dengan bidang yang bervariasi. Daripada memaksa pengguna untuk meneruskan daftar atau kamus, Python menyediakan dua simbol khusus: `*args` dan `**kwargs`.
Sintaks `*args` memungkinkan suatu fungsi menerima sejumlah argumen posisi. Tanda bintang tunggal `*` bertindak sebagai operator pembongkaran. Ketika ditempatkan dalam definisi fungsi, ia mengumpulkan argumen posisi tambahan ke dalam tupel bernama `args`. Hal ini memungkinkan Anda mengulangi nilai masukan, menjalankan komputasi, atau meneruskannya ke fungsi lain dengan mudah.
Sintaks `**kwargs`, di sisi lain, memungkinkan suatu fungsi menerima sejumlah argumen kata kunci (yang diberi nama). Tanda bintang ganda `**` mengumpulkan argumen-argumen ini ke dalam kamus bernama `kwargs`. Ini sangat berguna untuk meneruskan konfigurasi opsional, argumen gaya, atau atribut database. Ingat, nama 'args' dan 'kwargs' adalah konvensi; fungsi sebenarnya didorong oleh tanda bintang tunggal dan ganda.
Kode & Output Eksekusi
Kode ini mendemonstrasikan penggunaan *args untuk menjumlahkan angka variabel, **kwargs untuk mencetak profil pengguna, dan menggabungkan keduanya dalam satu fungsi.
def sum_all(*args):
print("args type:", type(args).__name__)
return sum(args)
print("Sum (1, 2, 3):", sum_all(1, 2, 3))
print("Sum (10, 20):", sum_all(10, 20))
def print_profile(**kwargs):
print("kwargs type:", type(kwargs).__name__)
for key, value in kwargs.items():
print(f"{key}: {value}")
print_profile(name="Bob", role="developer", country="US")
def master_function(first, *args, **kwargs):
print(f"First argument: {first}")
print(f"Additional positional args: {args}")
print(f"Keyword args: {kwargs}")
master_function("hello", 1, 2, 3, debug=True, user_id=42)args type: tuple
Sum (1, 2, 3): 6
args type: tuple
Sum (10, 20): 30
kwargs type: dict
name: Bob
role: developer
country: US
First argument: hello
Additional positional args: (1, 2, 3)
Keyword args: {'debug': True, 'user_id': 42}Implementasi Langkah demi Langkah
- Gunakan satu tanda bintang sebelum parameter (misalnya *args) untuk mengumpulkan argumen posisi ke dalam tupel.
- Gunakan tanda bintang ganda sebelum parameter (misalnya **kwargs) untuk mengumpulkan argumen kata kunci ke dalam kamus.
- Pertahankan urutan parameter yang benar: parameter standar, *args, parameter khusus kata kunci, lalu **kwargs.
- Gunakan sintaks pembongkaran saat memanggil fungsi dengan meneruskan *iterable atau **dictionary.
Pertanyaan yang Sering Diajukan
Apakah saya harus menggunakan nama "args" dan "kwargs"?
Tidak, ini adalah konvensi komunitas standar. Hanya awalan * dan ** yang diperlukan secara sintaksis. Anda dapat menulis *values dan **options, tetapi tetap menggunakan *args dan **kwargs sangat disarankan agar mudah dibaca.
Apa urutan yang benar saat mendefinisikan suatu fungsi?
Urutan argumen yang benar dalam tanda tangan fungsi adalah: argumen posisi, *args, argumen khusus kata kunci, dan terakhir **kwargs.
Topik Terkait
Pelajari cara membuat kelas dengan Python. Kuasai konstruktor __init__, metode instance, kata kunci self, dan instantiasi objek.
Cara Menggunakan Fungsi Lambda dengan PythonPelajari cara menggunakan fungsi lambda dengan Python. Kuasai fungsi anonim, panggilan balik sebaris, dan pengurutan data daftar dengan kunci lambda.
Sumber Daya Python yang Direkomendasikan
Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.
Loop Python
Pelajari cara menggunakan loop Python untuk melakukan iterasi pada data. Kuasai perulangan for, perulangan while, hancurkan, lanjutkan, dan ulangi praktik terbaik dengan contoh interaktif.
Lembar
Panduan referensi lengkap untuk manipulasi string Python. Kuasai pemformatan, pencarian, pemisahan, penggantian, dan pemeriksaan properti string.
Python vs JavaScript: Bahasa Pemrograman Mana yang Terbaik?
Perbandingan komprehensif antara Python dan JavaScript. Jelajahi perbedaan sintaksis, kinerja, kasus penggunaan (backend vs frontend), dan contoh pengkodean.