0
再帰関数を実行しているときにPythonで再帰スタックを表示または表示するにはどうすればよいですか?Pythonで再帰スタックを印刷するには
再帰関数を実行しているときにPythonで再帰スタックを表示または表示するにはどうすればよいですか?Pythonで再帰スタックを印刷するには
あなたが望むものは明らかではありませんが、あなたの質問がある限り、Python inspect moduleを使用して、次のような再帰的な方法で関数呼び出し元のスタックを出力できます。あなたはまた、現在のフレームにアクセスするためにsys.get_frame()
を使用することができますし、f_locals
プロパティを使用して、あなたは現在のフレームに渡されたパラメータにアクセスすることができます
import inspect, sys
max_recursion_depth = 10
def rec_func(recursion_index):
if recursion_index == 0:
return
rec_func(recursion_index-1)
current_frame = inspect.currentframe()
calframe = inspect.getouterframes(current_frame, 2)
frame_object = calframe[0][0]
print("Recursion-%d: %s" % (max_recursion_depth - recursion_index, frame_object.f_locals))
print("Passed parameters: %s" % (sys._getframe(1).f_locals))
rec_func(max_recursion_depth)
、再帰的に、あなたは減少し、このパラメータを観察することができます。
ほとんど全て私が上に持っているように得ることができるフレームオブジェクトからスタックに関する情報にアクセスできます。
どのようなスタックを意味していますか?あなたはもう少し質問してくれますか? –
再帰関数が呼び出されるたびに、言語は結果のスタックを構築します...これは意味がありますか? – AAA
@AAA私は以下の答えを更新しました。あなたがフレームにアクセスできないことを心に留めてください。 – SpiXel