Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah *args dan kwargs Berfungsi dalam Definisi dan Panggilan Fungsi Python?

Bagaimanakah *args dan kwargs Berfungsi dalam Definisi dan Panggilan Fungsi Python?

Barbara Streisand
Lepaskan: 2024-12-26 05:17:12
asal
794 orang telah melayarinya

How do *args and kwargs Work in Python Function Definitions and Calls?

* dan Parameter dalam Fungsi Python

Dalam Python, * (bintang berganda/asterisk) dan (bintang /asterisk) notasi dalam definisi fungsi dan panggilan memainkan peranan penting dalam mengendalikan pembolehubah argumen.

**kwargs

Sintaks

def foo(x, y, **kwargs):
    pass
Salin selepas log masuk

menunjukkan bahawa fungsi foo boleh menerima bilangan argumen kata kunci yang sewenang-wenangnya. Argumen kata kunci ini dikumpulkan ke dalam kamus bernama kwargs. Contohnya:

def bar(**kwargs):
    for a in kwargs:
        print(a, kwargs[a])

# Call the function
bar(name='one', age=27)
# Output:
# name one
# age 27
Salin selepas log masuk

*args

Begitu juga, sintaks

def foo(x, y, *args):
    pass
Salin selepas log masuk

membenarkan fungsi foo menerima bilangan hujah kedudukan yang sewenang-wenangnya. Argumen-argumen ini dikumpulkan ke dalam tuple bernama args.

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

# Call the function
foo(1)
# Output: 1

foo(1, 2, 3)
# Output: 1
# Output: 2
# Output: 3
Salin selepas log masuk

dan * Gabungan

Kedua-dua *kwargs dan args boleh digunakan bersama untuk membenarkan kedua-dua hujah tetap dan boleh ubah. Contohnya:

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

# Call the function
foo(123, 'a', 'b', apple='red')
# Output: 123 ('a', 'b') None {'apple': 'red'}
Salin selepas log masuk

Pembukaan Boleh Lelar Lanjutan

Notasi * juga boleh digunakan untuk membongkar senarai argumen semasa memanggil fungsi. Contohnya:

def foo(bar, lee):
    print(bar, lee)

# Create a list
baz = [1, 2]

# Call the function using unpacking
foo(*baz)
# Output: 1 2
Salin selepas log masuk

Nota: Parameter Kedudukan sahaja (Python 3.8 )

Dalam Python 3.8 dan lebih baru, adalah mungkin untuk menentukan parameter kedudukan sahaja dalam definisi fungsi dengan menggunakan * notasi sebelum parameter biasa:

def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass
Salin selepas log masuk

Fungsi ini hanya boleh menerima tiga hujah kedudukan, dan sebarang hujah tambahan mesti diluluskan sebagai hujah kata kunci.

Tertib Sisipan untuk kwargs

Dalam Python 3.6 dan kemudian, susunan hujah kata kunci dikekalkan dalam kamus kwargs. Ini boleh berguna dalam senario tertentu, seperti apabila anda perlu mengekalkan susunan hujah yang dihantar kepada fungsi.

Atas ialah kandungan terperinci Bagaimanakah *args dan kwargs Berfungsi dalam Definisi dan Panggilan Fungsi Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan