Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah Perbezaan Antara `*args` dan `kwargs` dalam Parameter Fungsi Python?

Apakah Perbezaan Antara `*args` dan `kwargs` dalam Parameter Fungsi Python?

Barbara Streisand
Barbara Streisandasal
2024-12-29 03:18:18150semak imbas

What's the Difference Between `*args` and `kwargs` in Python Function Parameters?

Menyingkap Kepentingan (Bintang Berganda) dan (Bintang) dalam Parameter Fungsi*

Dalam Python, berfungsi parameter yang dilambangkan dengan args dan *kwargs berfungsi sebagai mekanisme serba boleh untuk menampung hujah sewenang-wenangnya.

Membuka Hujah Kedudukan dengan *args

Parameter *args mengumpulkan semua hujah kedudukan yang mengatasi argumen yang dipratentukan menjadi tuple. Contohnya:

def foo(*args):
    for arg in args:
        print(arg)

Fungsi ini boleh menerima bilangan hujah kedudukan yang sewenang-wenangnya, seperti:

foo(1)  # Output: 1
foo(1, 2, 3)  # Output: 1 2 3

Memasang Hujah Kata Kunci dengan kwargs**

Sebaliknya, **kwargs mengumpul semua hujah kata kunci ke dalam a kamus.

def bar(**kwargs):
    for key, value in kwargs.items():
        print(key, value)

Memanggil fungsi ini dengan argumen kata kunci menghasilkan:

bar(name='John', age=30)  # Output: name John, age 30

Saling main args dan kwargs*

Kedua-dua simpulan bahasa boleh digabungkan untuk membolehkan gabungan tetap dan berubah hujah:

def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)

Fungsi ini boleh dipanggil seperti berikut:

foo(123, 'a', 'b', apple='red')  # Output: 123 ('a', 'b') None {'apple': 'red'}

Kes Penggunaan Tambahan

  • Membongkar Senarai Argumen: Simpulan bahasa * boleh digunakan untuk membongkar senarai hujah apabila memanggil fungsi:
def foo(bar, lee):
    print(bar, lee)

baz = [1, 2]
foo(*baz)  # Output: 1 2
  • Extended Iterable Unpacking (Python 3 ): * boleh digunakan di sebelah kiri tugasan untuk mendapatkan senarai:
first, *rest = [1, 2, 3, 4]
# first = 1
# rest = [2, 3, 4]
  • Argumen Kata Kunci Sahaja (Python 3 ): Fungsi boleh menyekat hujah kata kunci dengan menggunakan sintaks berikut:
def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass

Fungsi ini memerlukan tiga argumen kedudukan dan sebarang bilangan argumen kata kunci selepas *.

Atas ialah kandungan terperinci Apakah Perbezaan Antara `*args` dan `kwargs` dalam Parameter 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