*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. 関数の動作
- 位置引数(
*args
)をループで順に取り出し、各引数の値をprint
します。 - キーワード引数(
**kwargs
)をループで順に取り出し、キーと値のペアをprint
します。
check
Pythonの基本から応用まで、幅広くカバーする記事を公開中です。学習のポイントや実践的なコード例を通じて、Pythonの魅力と実用性を深く理解することができます。ぜひ、こちらの記事で気になる記事を見つけてください!