
エントリーの編集

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
pythonで引数のデフォルト値にリストを指定した場合の動作 - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
pythonで引数のデフォルト値にリストを指定した場合の動作 - Qiita
def func(a, b=[1]): b[0] += a print(b[0]) func(1) # --> 2 func(1) # --> 3 同じ引数で2回実行すると... def func(a, b=[1]): b[0] += a print(b[0]) func(1) # --> 2 func(1) # --> 3 同じ引数で2回実行すると、結果が変わりました。呼び出す度に結果が異なる関数が出来てしまいました。 より複雑なコードでこの様なバグを作ってしまうと見つけづらいと思われます。例えば、引数bを指定する場合としない場合が混在しているケースでは、バグの原因を特定するのに時間がかかるかも知れません。 動作 どうして上記の様な結果になったのでしょうか。 ポイントは、def文が宣言文ではなく、他の要素と同様に命令文であるということです。def文は、関数型のオブジェクトを生成し、それに名前をつけて格納する命令文です。 そして、引数のデフォルト値は、遅延評価されず、def文の実行時に行われます。 ここにpythonにおけるリストなどのimmutableな型の値の扱