Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah `*args` dan `kwargs` Mengendalikan Argumen Pembolehubah dalam Fungsi Python?

Bagaimanakah `*args` dan `kwargs` Mengendalikan Argumen Pembolehubah dalam Fungsi Python?

DDD
DDDasal
2024-12-23 02:21:13520semak imbas

How Do `*args` and `kwargs` Handle Variable Arguments in Python Functions?

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