Rumah >pembangunan bahagian belakang >Tutorial Python >Memahami *args dan **kwargs dalam Python
Dalam Python, *args
dan **kwargs
ialah alat berkuasa untuk mencipta fungsi fleksibel yang membolehkan fungsi menerima bilangan argumen yang berubah-ubah. Ini amat berguna apabila anda tidak mengetahui terlebih dahulu berapa banyak hujah yang akan dihantar kepada fungsi tersebut.
*args
? *args
membenarkan fungsi menerima sebarang bilangan hujah kedudukan. Parameter ini disimpan dalam tuple.
<code class="language-python">def print_numbers(*args): for number in args: print(number) print_numbers(1, 2, 3, 4, 5)</code>
Output:
<code>1 2 3 4 5</code>
Di sini anda boleh lulus sebarang nombor dan semuanya akan dicetak. Jika tiada hujah diluluskan, args
hanya akan menjadi tuple kosong.
**kwargs
? **kwargs
membenarkan fungsi menerima sebarang bilangan hujah kata kunci. Parameter ini disimpan dalam kamus, di mana kuncinya ialah nama parameter dan nilainya ialah nilai yang sepadan.
<code class="language-python">def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") print_info(name="Alice", age=25, city="New York")</code>
Output:
<code>name: Alice age: 25 city: New York</code>
Di sini anda boleh melepasi sebarang bilangan pasangan nilai kunci. Jika tiada hujah kata kunci diluluskan, kwargs
hanya akan menjadi kamus kosong.
*args
dan **kwargs
Anda boleh menggunakan kedua-dua *args
dan **kwargs
dalam fungsi yang sama. Ini membolehkan anda mengendalikan kedua-dua hujah kedudukan dan kata kunci.
<code class="language-python">def describe_person(*args, **kwargs): print("Attributes:") for arg in args: print(f"- {arg}") print("\nDetails:") for key, value in kwargs.items(): print(f"{key}: {value}") describe_person("Friendly", "Helpful", name="Bob", age=30, city="Boston")</code>
Output:
<code>Attributes: - Friendly - Helpful Details: name: Bob age: 30 city: Boston</code>
Di sini, *args
mengumpul parameter kedudukan (seperti "Mesra" dan "Membantu") dan **kwargs
mengumpul parameter kata kunci (seperti nama="Bob" dan umur=30).
*args
. **kwargs
. *args
**kwargs
<code class="language-python">def add_numbers(*args): total = sum(args) print(f"The sum is: {total}") add_numbers(1, 2, 3, 4) add_numbers(10, 20)</code>
Output:
<code>The sum is: 10 The sum is: 30</code>
<code class="language-python">def greet_people(**kwargs): for name, greeting in kwargs.items(): print(f"{greeting}, {name}!") greet_people(Alice="Hello", Bob="Hi", Charlie="Hey")</code>
Output:
<code>Hello, Alice! Hi, Bob! Hey, Charlie!</code>
*args
dan **kwargs
<code class="language-python">def shopping_list(*items, **prices): print("Items to buy:") for item in items: print(f"- {item}") print("\nPrices:") for item, price in prices.items(): print(f"{item}: ${price}") shopping_list("Apples", "Bananas", Apples=2, Bananas=1.5, Oranges=3)</code>
Output:
<code>Items to buy: - Apples - Bananas Prices: Apples: Bananas: .5 Oranges: </code>
Dengan menggunakan *args
dan **kwargs
anda boleh menjadikan fungsi Python anda lebih dinamik dan fleksibel. Ini amat berguna apabila bekerja dengan program yang bilangan input mungkin berbeza-beza. Cuba ciri ini bermula dengan projek kecil dan anda akan mendapati ia sangat berguna!
Atas ialah kandungan terperinci Memahami *args dan **kwargs dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!