Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの*argsと**kwargsとは?可変長引数の使い方を実例付きで解説

Pythonで関数を定義する目的は、引数に異なる値を渡しながら同じコードを何度でも再利用できるようにすることです。しかし、設計上よくある課題として、「関数を呼び出すたびに、渡すべき引数の数が決まっていない場合はどうすればよいのか」という問題があります。こうした場面で活躍するのが、*args**kwargs という特別な引数です。本記事では、それぞれの仕組みと使い方を順番に見ていきましょう。

*args:可変長の位置引数を受け取る

*args を使うと、任意の個数の引数(位置引数)を関数に渡せるようになります。以下の例では、一連の数値を掛け合わせた結果を求めています。関数を呼び出すたびに、渡す数値の個数が変わっても問題ありません。

コード例

def findproduct(*many_nums):
    result = 1
    for num in many_nums:
        result = result * num
    print("掛け算の結果:", result)

findproduct(3, 9)
findproduct(2, 11, 10)

実行結果

掛け算の結果: 27
掛け算の結果: 220

このように、*many_nums の部分に渡された複数の引数は、タプル(tuple)としてまとめて関数内で受け取られます。forループで各要素を取り出して処理しているのがポイントです。

**kwargs:可変長のキーワード引数を受け取る

次に、キーワード引数、つまり「キーと値のペア」を関数に渡したい場面を考えてみましょう。

この場合も、キーワード引数の個数は自由に変更できます。このような引数を受け取るために使われるのが **kwargs です。キーワード引数を使用する際は、アスタリスク(*)が2つ必要になる点に注意してください。実際には、これらのキーワード引数は、複数のキーと値のペアを保持するPythonの辞書(dict)として関数に渡されます。

コード例

def country_details(**state_info):
    print('\n')
    for k, v in state_info.items():
        print("{} は {}".format(k, v))

country_details(StateName="Telangana", Capital="Hyderabad", Population=3400000)
country_details(StateName="Andhra Pradesh", Capital="Amaravati", Population=1000000, ForestCoverage="30%")

実行結果

StateName は Telangana
Capital は Hyderabad
Population は 3400000

StateName は Andhra Pradesh
Capital は Amaravati
Population は 1000000
ForestCoverage は 30%

辞書の items() メソッドを使うことで、渡されたすべてのキーと値のペアを簡単に取り出して処理できます。2回目の呼び出しでは引数が1つ増えていますが、同じ関数がそのまま動作している点に注目してください。

*argsと**kwargsを使う際のポイント

  • 名前は慣習にすぎない: argskwargs という名前自体に特別な意味はなく、重要なのはアスタリスクの数です。*nums**options のように、分かりやすい名前を付けても問題ありません。
  • 受け取る型が違う: *args はタプル、**kwargs は辞書として引数を受け取ります。
  • 引数の並び順に注意: 通常の引数 → *args → キーワード専用引数 → **kwargs の順で定義するのがPythonのルールです。

この2つの仕組みを理解しておくと、引数の数が不定の柔軟な関数や、他の関数へ引数をそのまま中継するラッパー関数などを、簡潔に実装できるようになります。

  1. Pythonで学ぶ相関と回帰分析の基礎|Seabornを使ったデータ分析入門

    相関(Correlation)とは、2つのデータセット間に存在する依存関係を含む統計的な関係性を指します。一方、線形回帰(Linear Regression)は、従属変数と1つ以上の独立変数の間の関係を直線的なアプローチで捉える手法です。独立変数が1つの場合は「単回帰」、複数ある場合は「重回帰」と呼ばれます。相関とは何か依存現象の身近な例としては、親と子の身体的特徴(外見)の類似性や、商品の価格と供給量の関係などが挙げられます。価格が上がれば供給量が増える、といった具合に、変数同士が互いに影響し合う様子を統計的に表したものが相関です。本記事では、Pythonの可視化ライブラリ「Seaborn」

  2. 【初心者向け】Pythonの*argsと**kwargsの使い方をわかりやすく解説

    *argsとは?Pythonでは、アスタリスク1つ(*)を付けた*argsを関数の仮引数として定義することで、キーワードなしの可変長引数(位置引数)を任意の個数だけ受け取れるようになります。ここで重要なのはアスタリスク(*)の部分であり、「args」という名前自体に特別な意味はありません。あくまで慣習的に使われる名前で、たとえば「*numbers」のように別の名前でも同じように動作します。*argsを使うと、関数呼び出し時に渡された複数の位置引数はタプル(tuple)としてまとめられ、関数内でそのタプルに対して繰り返し処理などを行えます。*argsの使用例次のコードは、渡されたすべての数値を掛