Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah *args dan kwargs Python Mengendalikan Parameter Fungsi?
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!