![How Do `*args` and `kwargs` Handle Variable Arguments in Python Functions?](https://img.php.cn/upload/article/000/000/000/173489167692346.jpg)
Memahami Kepentingan (Star/Asterisk) dan * (Double Star/Asterisk) dalam Parameter
Dalam definisi fungsi Python, dan * operator menyediakan simpulan bahasa yang berkuasa untuk mengendalikan bilangan sewenang-wenangnya argumen.
Argumen Kedudukan: *args
- Parameter *args membenarkan fungsi menerima nombor pembolehubah argumen kedudukan.
- Argumen ini dikumpulkan ke dalam tuple yang boleh diakses dalam fungsi.
Contoh:
def foo(x, y, *args):
pass
foo(1, 2, 3)
# args = (3,)
Argumen Kata Kunci: kwargs**
- The **Parameter kwargs membenarkan fungsi menerima sebarang bilangan hujah kata kunci.
- Ini hujah dikumpulkan ke dalam kamus dengan kuncinya ialah nama hujah dan nilainya ialah nilai hujah.
Contoh:
def bar(x, y, **kwargs):
pass
bar(x=1, y=2, name='John', age=27)
# kwargs = {'name': 'John', 'age': 27}
Mencampurkan Argumen Tetap dan Boleh Ubah
- Kedua-duanya args dan *kwargs boleh digabungkan dengan argumen tetap biasa untuk memberikan fleksibiliti dalam definisi fungsi.
Contoh:
def foo(kind, *args, bar=None, **kwargs):
print(kind, args, bar, kwargs)
foo(123, 'a', 'b', apple='red')
# 123 ('a', 'b') None {'apple': 'red'}
Tambahan Penggunaan
- boleh digunakan untuk membongkar senarai argumen apabila memanggil fungsi.
- Dalam Python 3, dan * boleh digunakan di sebelah kiri tugasan untuk membongkar iterables ke dalamnya pembolehubah.
- Python 3.6 memperkenalkan sintaks baharu yang mengehadkan hujah kedudukan selepas *.
Nota:
- Python menggunakan kamus untuk mewakili hujah kata kunci, yang mengekalkan susunan sisipan dalam Python 3.6 .
-
kamus kwargs mengekalkan susunan sisipan dalam Python 3.7 dan ke atas, walaupun untuk pelaksanaan bukan CPython.
Atas ialah kandungan terperinci Bagaimanakah `*args` dan `kwargs` Mengendalikan Argumen Pembolehubah dalam Fungsi Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan:Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn