コンテンツにスキップ

Pythonチュートリアル: argsを使った効果的な方法

[

Python argsとkwargs:解説

Pythonの関数定義を見ると、*argsと**kwargsという奇妙な引数が2つあることがあります。もしもこれらの特殊な変数が一体何であるか、またはIDEがmain()でこれらを定義する理由がわからなかったら、この記事はあなたにとって役立つでしょう。この記事では、Pythonでargsとkwargsを使用して関数に柔軟性を加える方法について学びます。

この記事の最後まで読むと、以下のことがわかります:

  • *argsと**kwargsの真の意味
  • 関数定義での*argsと**kwargsの使い方
  • イテラブルオブジェクトの展開に単一のアスタリスク(*)を使用する方法
  • 辞書の展開に二重のアスタリスク(**)を使用する方法

この記事では、既にPythonの関数の定義方法やリストや辞書との作業方法を知っていることを前提としています。

クイズに挑戦しよう: 対話型の「Python argsとkwargs:解説」クイズで自分の知識をテストしてみましょう。クイズの完了後、学習の進捗を追跡できるスコアが表示されます。

関数への複数の引数の渡し方

*argsと**kwargsを使用すると、関数に複数の引数またはキーワード引数を渡すことができます。次の例を考えてみましょう。以下は、2つの引数を取り、それらの合計値を返す簡単な関数です。

def my_sum(a, b):
return a + b

この関数は問題ありませんが、2つの引数に限定されています。実行時にのみ特定の数の引数が渡される場合、引数の数がいくつであるかはわかりません。無論、何個の整数が渡されるか問わず、すべての整数を合計する関数を作成できれば便利ではありませんか?

関数定義でのPython argsの使用

関数に可変個数の引数を渡す方法にはいくつかの方法があります。最初の方法は、コレクションの経験がある人々にとって最も直感的な方法です。単に、関数に渡すすべての引数のリストまたはセットを渡すだけです。そのため、my_sum()には、追加するすべての整数のリストを渡すことができます。

def my_sum(my_integers):
result = 0
for x in my_integers:
result += x
return result
list_of_integers = [1, 2, 3]
print(my_sum(list_of_integers))

この実装は機能しますが、この関数を呼び出すたびに、渡すための引数のリストも作成する必要があります。それはめんどうですし、特にリストに入れるべき値を最初から知らない場合は不便です。

ここで、*argsが非常に便利になる理由が明確になります。なぜなら、*argsを使うと、可変数の位置引数を渡すことができるからです。次の例を見てください。

def my_sum(*args):
result = 0
# Pythonのargsタプルを反復処理
for x in args:
result += x
return result
print(my_sum(1, 2, 3))

この例では、もはやmy_sum()にリストを渡していません。代わりに、関数に渡す引数の数を自由に決めることができます。これにより、柔軟性のある関数を作成できるようになります。