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

Pythonの可変長引数(*args)の使い方をわかりやすく解説

可変長引数とは

Pythonで関数を定義する際、あらかじめ指定した数よりも多くの引数を処理したいケースがあります。このような引数は「可変長引数」と呼ばれ、必須引数やデフォルト引数とは異なり、関数定義時に個別の名前を持ちません。呼び出し時に渡された引数の数に応じて、柔軟に対応できるのが特徴です。

構文

キーワードなしの可変長引数を受け取る関数の基本構文は以下の通りです。

def functionname([formal_args] *var_args_tuple):
    "関数のドキュメント文字列"
    関数の処理
    return [expression]

変数名の前にアスタリスク(*)を付けると、その変数がキーワードなしの可変長引数をすべてタプルとして保持します。関数呼び出し時に追加の引数が指定されなかった場合、このタプルは空のままになります。

使用例

実際に可変長引数を使った関数の例を見てみましょう。

#!/usr/bin/python
# 関数の定義
def printinfo(arg1, *vartuple):
    "渡された引数を出力します"
    print("Output is: ")
    print(arg1)
    for var in vartuple:
        print(var)
    return

# printinfo関数を呼び出し
printinfo(10)
printinfo(70, 60, 50)

実行結果

上記のコードを実行すると、次のような結果が出力されます。

Output is: 
10
Output is: 
70
60
50

1回目の呼び出しでは追加の引数がないため vartuple は空のタプルになり、2回目の呼び出しでは残りの引数「60」と「50」がタプルとして格納されていることがわかります。

補足:キーワード付き可変長引数(**kwargs)

キーワード付きの可変長引数を受け取りたい場合は、アスタリスク2つ(**)を使用します。この場合、引数は辞書型として受け取られます。

def printinfo(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

printinfo(name="Taro", age=25)
# 出力:
# name: Taro
# age: 25

*args と **kwargs を組み合わせることで、位置引数・キーワード引数の両方に柔軟に対応した関数を定義できます。

  1. Pythonのissubset()関数とは?部分集合の判定方法を実例付きで解説

    本記事では、Python標準ライブラリに用意されているissubset()関数の仕組みと使い方について詳しく解説します。 issubset()メソッドは、あるセット(集合)のすべての要素が、引数として渡した別のセットにも含まれている場合にブール値のTrueを返し、1つでも含まれていない要素があればFalseを返します。 下の図では、BはAの部分集合です。もしAとBが同一のセットであれば、両者は互いに部分集合の関係にあるといえます。つまり、両方のセットがまったく同じ要素を持っているということを意味します。 構文 <set 1>.issubset(<set 2>) 戻り値

  2. Pythonのintersection()関数とは?集合の共通要素(積集合)を求める方法

    この記事では、Pythonのセット(集合)に対して実行できるintersection()関数について詳しく解説します。数学における「積集合(インターセクション)」とは、2つの集合から共通する要素を見つけ出すことを指します。構文<セット名>.intersection(<セットa1>, <セットa2>, …)戻り値引数として渡されたすべての集合に共通する要素(積集合)が、新しいセットとして返されます。使用例set_1 = {t,u,t,o,r,i,a,l} set_2 = {p,o,i,n,t} set_3 = {t,u,t} # 2つの集合の積集合 print