ホームページ >バックエンド開発 >Python チュートリアル >Python の *args と **kwargs を理解する
Python では、*args
と **kwargs
は、関数が可変数の引数を受け入れることができる柔軟な関数を作成するための強力なツールです。これは、関数に渡される引数の数が事前にわからない場合に特に便利です。
*args
とは何ですか? *args
では、関数が任意の数の位置引数を受け入れることができます。これらのパラメータはタプルに保存されます。
<code class="language-python">def print_numbers(*args): for number in args: print(number) print_numbers(1, 2, 3, 4, 5)</code>
出力:
<code>1 2 3 4 5</code>
ここでは、任意の数の数値を渡すことができ、それらはすべて出力されます。引数が渡されない場合、args
は単なる空のタプルになります。
**kwargs
とは何ですか? **kwargs
では、関数が任意の数のキーワード引数を受け入れることができます。これらのパラメータは辞書に保存されます。キーはパラメータ名、値は対応する値です。
<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>
出力:
<code>name: Alice age: 25 city: New York</code>
ここでは、任意の数のキーと値のペアを渡すことができます。キーワード引数が渡されない場合、kwargs
は単なる空の辞書になります。
*args
と**kwargs
同じ関数内で *args
と **kwargs
の両方を使用できます。これにより、位置引数とキーワード引数の両方を処理できるようになります。
<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>
出力:
<code>Attributes: - Friendly - Helpful Details: name: Bob age: 30 city: Boston</code>
ここで、*args
は位置パラメータ (「Friendly」や「Helpful」など) を収集し、**kwargs
はキーワード パラメータ (name="Bob" や age=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>
出力:
<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>
出力:
<code>Hello, Alice! Hi, Bob! Hey, Charlie!</code>
*args
と **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>
出力:
<code>Items to buy: - Apples - Bananas Prices: Apples: Bananas: .5 Oranges: </code>
*args
と **kwargs
を使用すると、Python 関数をより動的で柔軟にすることができます。これは、入力数が変化する可能性のあるプログラムを操作する場合に特に便利です。これらの機能を小さなプロジェクトから試してみると、非常に便利であることがわかります。
以上がPython の *args と **kwargs を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。