Python3.7の質問です。
ある関数の内部でそれ自身を呼び出す処理を行うときに、「今何回目の呼び出し中か?」を参照できるようにしたいです。
例えば下のコードの場合、func()が何重に呼ばれた段階かによって「処理」と書かれた部分らの動作を変化させる、といった状況です。
Python3
1def func(): 2 if 条件式: 3 処理 4 func() 5 else: 6 処理 7 return
それで、↓の様に関数定義の外にグローバル変数を置いてそれを処理回数のカウンターとして使って……というのを考えました。(使うときはwrap()
を呼ぶ)
Python3
1def wrap(): 2 global count 3 count = 0 4 func() 5 6def func(): 7 if 条件式: 8 処理A(countの値に応じて) 9 count += 1 10 func() 11 else: 12 処理B(countの値に応じて) 13 return
これ↑なら処理が複雑になっても対応できます。↓
Python3
1def wrap(): 2 count = 0 3 func() 4 5def func_with_count(): 6 global count 7 count += 1 8 func() 9 count -= 1 10 11def func(): 12 global count 13 if 条件式1: 14 処理A-1 15 func_with_count() 16 処理A-2 17 func_with_count() 18 else: 19 処理B 20 return
しかし長ったらしくて後から読み返しにくいものになってしまいました。
何か簡単な書き方はないでしょうか。(関数をいくつ呼び出しているかを取得する特殊変数とかあったりしないでしょうか)
最初の例だとwhileを使えばすぐ書ける気もしますが、if分岐がelifだらけの場合等ではうまく書けませんでした。
なんだか変な質問文になってしまいましたがどなたか回答お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/10/17 10:37