Python

Pythonの可変長引数を使って見た目をスッキリさせる方法

Pythonの可変長引数(*args, **kwargs)

Python では、関数定義で引数に * または **(1個または2個のアスタリスク)を付けると、任意の数の引数(可変長引数)を受け取ることができます。

  • *args:複数の引数をタプルとして受け取る
  • **kwargs:複数のキーワード引数を辞書(dict)として受け取る

 

Python の辞書(dict)の基本的な使い方は、以下の記事を参照ください。

辞書
関連記事Pythonの辞書(dict)に要素を追加・削除・連結する方法

Pythonの辞書(dict)について、要素(key, value)のペアを追加、任意の要素の削除、全要素の削除、また辞書同士を連結する方法についてまとめています。keyが存在する場合・存在しない場合で挙動が異なるので注意が必要です。

続きを見る

 

*args:複数の引数をタプルとして受け取る

Python では、*args のように * をつけた引数を定義するだけで、
任意の数の引数を指定することができます。

 

可変長引数を使わない場合

SANACHAN
SANACHAN
可変長引数を使った方が、関数の呼出し、内部処理ともにスッキリですね!

 

**kwargs:複数のキーワード引数を辞書(dict)として受け取る

Python では、**kwargs のように ** をつけた引数を定義すると、
任意の数のキーワード引数を指定することができます。

受け取った関数の中では、引数名がキー key、値が value となる辞書として扱えます。

注意ポイント

** を付けた引数は、普通の位置引数と合わせて使用できますが、
** を付けた引数は最後に定義する必要があります。

 

*argsや**kwargsを使用する際に覚えておくべき注意点

  • * や ** とジェネレーター(yield)を一緒に使うとメモリを使い果たしてクラッシュする場合がある(どこまでも引数として保持してしまう)
  • *args を使っていた関数に新たに位置引数を追加すると、発見が困難な不具合を生みだしてしまう可能性がある(呼出し元の変更を忘れた場合、引数がズレる)

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-Python
-,