ホームページ > バックエンド開発 > Python チュートリアル > Python の *args と **kwargs を理解する

Python の *args と **kwargs を理解する

Susan Sarandon
リリース: 2025-01-16 22:16:13
オリジナル
547 人が閲覧しました

Understanding *args and **kwargs in 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 など) を収集します。


簡単な記憶ルール

  1. 可変数の 位置引数を渡す必要がある場合は、*args を使用します。
  2. 可変数の キーワード引数 を渡す必要がある場合は、**kwargs を使用します。
  3. 関数シグネチャ内の順序は常に次のようにする必要があります:
    • 一般的な位置パラメータ
    • *args
    • デフォルトのキーワードパラメータ
    • **kwargs

初心者向けの実践的な例

例 1: 数値を加算する関数

<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>
ログイン後にコピー

例 2: 名前で挨拶する

<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>
ログイン後にコピー

例 3: 買い物リストで *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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート