はじめに
Seleniumスクレイピングのかんたんなデバッグのためにスクリーンショットを保存する関数を用意した際、ファイル名に番号をつけ、何番目に保存された画像かわかるようにしたかった経緯があります。
その関数の累計呼び出し回数を、その関数内で利用したいということで検索してみたところ、意外とシンプルな解が見つからず難航したため、ここに1つの解を記しておきます。
「いい」方法ではないと思われますが、数十行程度のプログラムを書く際にはこれでいいのではと思います。
解
コード
def f(cnt=[0]):
cnt[0] += 1
print(str(cnt[0]) + "回目の呼び出し")
f()
f()
f()
実行結果
1回目の呼び出し
2回目の呼び出し
3回目の呼び出し
さいごに
デフォルト引数にリストを用いるのは一般的に推奨されていませんが、その特性が活きる場面があるのだなと。
参考
(StackOverflowの機械翻訳?)