Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah *args dan kwargs Python Mengendalikan Parameter Fungsi?

Bagaimanakah *args dan kwargs Python Mengendalikan Parameter Fungsi?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-22 15:41:11810semak imbas

How Does Python's *args and kwargs Handle Function Parameters?

Pembukaan Parameter dengan dan dalam Fungsi Python*

Dalam fungsi Python, dan * sintaks membolehkan fleksibiliti yang lebih besar dalam parameter pengendalian.

Pembukaan Argumen Kedudukan (kwargs)

Parameter *args mengumpul semua argumen kedudukan sebagai tupel. Contohnya:

def foo(x, y, *args):
    for a in args:
        print(a)

Memanggil foo(1, 2, 3) cetakan:

1
2
3

Pembukaan Hujah Kata Kunci (kwargs)

Parameter **kwargs mengumpul semua hujah kata kunci sebagai kamus. Contohnya:

def bar(x, y, **kwargs):
    for k, v in kwargs.items():
        print(k, v)

Bar panggilan(x=1, y=2, name='John') cetakan:

name John

Pembukaan Gabungan

Kedua-dua simpulan bahasa boleh digabungkan untuk membenarkan gabungan argumen tetap dan boleh ubah. Contohnya:

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

Memanggil foo(123, 'a', 'b', apple='red') cetakan:

123 ('a', 'b') None {'apple': 'red'}

Sebaliknya, kwarg boleh digunakan untuk membongkar hujah kata kunci dalam panggilan fungsi. Contohnya:

def foo(a, b, c):
    print(a, b, c)

obj = {'b':10, 'c':'lee'}

foo(100, **obj) # Prints 100 10 lee

Senarai dan Buka Bungkusan Tuple dengan *

Sintaks * juga boleh digunakan untuk membongkar senarai dan tupel apabila memanggil fungsi. Contohnya:

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

baz = [1, 2]

foo(*baz) # Prints 1 2

Extended Iterable Unpacking

Dalam Python 3, * boleh digunakan di sebelah kiri tugasan untuk membongkar iterables ke dalam pembolehubah individu. Contohnya:

first, *rest = [1, 2, 3, 4]
# first = 1
# rest = [2, 3, 4]

Argumen Kedudukan Sahaja

Python 3 juga memperkenalkan hujah kedudukan sahaja. Fungsi boleh menentukan bahawa hanya argumen tertentu boleh menjadi kedudukan. Contohnya:

def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass

Fungsi ini hanya menerima 3 hujah kedudukan. Semua hujah selepas * mesti dihantar sebagai hujah kata kunci.

Atas ialah kandungan terperinci Bagaimanakah *args dan kwargs Python Mengendalikan Parameter Fungsi?. 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