Python での*と**の目的

Najwa Riyaz 2023年1月30日
  1. Python での*の定義
  2. Python での**の定義
  3. Python の関数呼び出しでの***の使用
Python での*と**の目的

この記事では、Python での***の目的について説明します。

Python では、単一のアステリックス(*)と二重のアステリックス(**)を使用して、可変数の引数を示します。

次のいずれかの方法で、Python 関数に任意の数の引数を渡すことができます。

  1. 位置引数(*
  2. キーワード引数(**

Python での*の定義

Python で記号*を使用して、関数に可変数の位置引数/パラメーターを許可します。

以下の例に従ってください。

def function_singleasterix(*someargs):
    for i in someargs:
        print(i)

これで、list または tuple を使用したドライバーコードは次のようになります。

listdata = ["Alex", "Tom", "John", "Alice"]
function_singleasterix(listdata)

出力:

['Alex', 'Tom', 'John', 'Alice']

ユーザーにパラメーターの名前を知らせたくない場合は、位置のみの引数を使用してください。

たとえば、API では位置のみの変数を使用することをお勧めします。これにより、パラメーターの名前が変更された場合に API が変更された場合の破損を回避できます。

Python での**の定義

Python で記号**を使用して、関数に可変数のキーワード引数/パラメーターを許可します。後の引数は、タプルやリストではなく、マッピング(辞書のキーと値のペア)アイテムでなければならないことに注意してください。

以下のサンプルコードに従ってください。

def function_doubleasterix(**keywordargs):

    print("The keys in the kwargs dicionary are -", keywordargs.keys())
    print("The values in the kwargs dicionary are -", keywordargs.values())

    print("--The key value assignment in the 'keywordargs' dictionary are as follows--")
    for key, value in keywordargs.items():
        print("%s == %s" % (key, value))

上記の例では、keywordargs は以下のプログラムのように辞書に関連付けられています。

function_doubleasterix(SNo001="Alex", SNo002="Tom")

出力:

The keys in the 'keywordargs' dicionary are - dict_keys(['SNo001', 'SNo002'])
The values in the 'keywordargs' dicionary are - dict_values(['Alex', 'Tom'])
--The key value assignment in the 'keywordargs' dictionary are as follows--
SNo001 == Alex
SNo002 == Tom

上記の例では、**keywordargs はキーワード引数を辞書キーと値のペアとして提供します。

Python の関数呼び出しでの***の使用

記号*および**は、関数呼び出しでも使用されます。これらを使用して、次のいずれかを使用して可変数の引数を関数に渡します。

  • リスト - *
  • タプル-*
  • 辞書 - **

これがあなたが従うことができるいくつかの例です。

変数 list を入力として関数を呼び出する。次のように*を使用する

varlist = ["Tom", "John", "Alice"]
functiondef(*varlist)

変数 dictionary を入力として関数を呼び出する。次のように**を使用する

vardict = {"a": "Tom", "b": "John", "c": "Alice"}
functiondef(**vardict)

変数タプルを入力として関数を呼び出する。次のように*を使用する

vartuple = ("Tom", "John", "Alice")
functiondef(*vartuple)

上記のすべての場合の出力は次のとおりです。

SNo1 = Tom
SNo2 = John
SNo3 = Alice

関連記事 - Python Argument