I.はじめに
検査の4つの主要モジュールが使用します。
1.かどうかモジュールフレームタイプ検出機能、等
2.ソースを取得
3.クラスまたは関数のパラメータ情報
4.解析スタック
第二に、使用
#名前とデフォルト値Pythonの関数のパラメータを取得し、名前のタプルを返し inspect.getfullargspecを(FUNC) #は、最も外側のために、レコードの発信者リストのスタックフレームを返し、それぞれには、発信者リストに戻り、スタック上の最後の1発信者層 inspect.stack(コンテキスト= 1)
結果inspect.stack()の呼び出しは、層の数が変化異なります スタック = inspect.stack() 印刷(スタック) #[FrameInfo(フレーム= <0x000001F3A7201C88 ATオブジェクトフレーム>、 #1 / PycharmProjects /:ファイル名=」Dをフラスコ/ flask_demo / app.py ' #1 LINENO = 34であり、関数=' <Module1の> ' #1 code_context = ['スタックinspect.stack =()\ N- ']、インデックス= 0)] DEF RUN(): スタック = inspect.stack() プリント(スタック) RUN() #[FrameInfo(フレーム= <0x0000019BD0706CA8 ATオブジェクトフレーム>、 #1 のファイル名= 'D:/PycharmProjects/flask/flask_demo/app.py'、 #1 LINENO = 43は、関数であります= 'RUN'、 # code_context = [ 'スタック= inspect.stack()\ n ']、インデックス= 0)、 #FrameInfo(フレーム= <0x0000019BCE31FA48のフレームオブジェクト>、 #1 のファイル名=' D:/PycharmProjects/flask/flask_demo/app.py' 、 #LINENO = 50、関数= '<モジュール>'、code_context = [ 'ラン()\ n']、インデックス= 0)] デフ人(): DEF 実行(): スタック = inspect.stack() プリント(スタック) 戻りラン() 人() #[FrameInfo(フレーム、ファイル名= <0x0000017020FCE048のフレームオブジェクト> = 'D:/PycharmProjects/flask/flask_demo/app.py'、LINENO = 58、関数= 'ラン'、code_context = [ 'スタック= inspect.stack()\ n']、インデックス= 0)、 #FrameInfo(ファイル名フレーム= <0x00000170202FB808のフレームオブジェクト> = 'D:/PycharmProjects/flask/flask_demo/app.py'、LINENO = 60、関数= '人'、code_context = [ '戻りラン()\ n'] 、インデックス= 0)、 #FrameInfo(フレーム= <0x000001701E06FA38のフレームオブジェクト>、ファイル名= 'D:/PycharmProjects/flask/flask_demo/app.py'、LINENO = 61、関数= '<モジュール>'、code_context = [ '人()の\ n']、インデックス= 0)]