更新:2024/10/17

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

ふゅか
ふゅか
可変長引数って知ってる?
はるか
はるか
うん、関数に任意の数の引数を渡せるやつ。便利。

1. 可変長引数とは

Pythonでは、可変長引数を使って関数に任意の数の引数を渡すことができます。これは、関数定義時に引数名の前に * または ** を付けることで実現します。位置引数*args とキーワード引数 **kwargs が一般的に使われる形式です。

2. Pythonの実装例

2.1. 引数をタプルとして受け取る

はるか
はるか
タプルとして引数を受け取る方法。
def sample_function(*args):
    for arg in args:
        print(arg)

sample_function(1, 2, 3)
# 出力:
# 1
# 2
# 3
ふゅか
ふゅか
引数をそのまま渡すと、それぞれの値が表示されるのね。

次に、sample_functionをリストを引数として呼び出す場合を見てみましょう。

sample_function([1, 2, 3])

出力が

[1, 2, 3]

となります。

ふゅか
ふゅか
でもリストをそのまま渡すと、リスト全体が一つの引数として扱われるの。
sample_function(*[1, 2, 3])

リストの要素を個別の引数として渡すには、関数呼び出し時にアスタリスク(*)を付けてアンパックします。
出力が

1
2
3

となります。

はるか
はるか
リストの要素を個別の引数として渡すには、アンパックが必要。

2.2. キーワード引数を辞書として受け取る

はるか
はるか
今度はキーワード引数。辞書で渡すことができる。
def sample_function(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

sample_function(name="John", age=30)
# 出力:
# name: John
# age: 30

次に、辞書を渡して関数を呼び出す場合を見てみましょう。辞書型を渡す場合には**演算子を使用します。
この場合、辞書の各キーと値が個別のキーワード引数として渡されるため、出力は次のようになります。

dict_chara = {"name":"ふゅか","age":6800}
sample_function(**dict_chara)

はるか
はるか
**を使うと、辞書の各キーと値が個別のキーワード引数になる。

2.3. 同時に使う

ふゅか
ふゅか
位置引数とキーワード引数を同時に使ってみましょう!
def sample_function(*args, **kwargs):
    for arg in args:
        print(arg)
    for key, value in kwargs.items():
        print(f"{key}: {value}")

sample_function(1, 2, 3, name="John", age=30)
# 出力:
# 1
# 2
# 3
# name: John
# age: 30

 

2.3.1. 関数の動作

  1. 位置引数(*args)をループで順に取り出し、各引数の値を print します。
  2. キーワード引数(**kwargs)をループで順に取り出し、キーと値のペアを print します。

check

Pythonの基本から応用まで、幅広くカバーする記事を公開中です。学習のポイントや実践的なコード例を通じて、Pythonの魅力と実用性を深く理解することができます。ぜひ、こちらの記事で気になる記事を見つけてください!

Pythonの記事のまとめ