9.2 どのように動作しているか

いくつかの変更がインタプリタへ加えられました:

トレース関数は三つの引数を持ちます: frameeventおよびargframeは現在のスタックフレームです。eventは文字列です: 'call''line''return'または'exception'argはイベント型に依存します。

新しいローカルスコープに入ったときはいつでも、グローバルトレース関数が('call'に設定されたeventとともに)呼び出されます。そのスコープで用いられるローカルトレース関数への参照を返すか、またはスコープがトレースされるべきでないならばNoneを返します。

ローカルトレース関数はそれ自身への(あるいは、さらにそのスコープ内でさらにトレースを行うための他の関数への)参照を返します。または、そのスコープにおけるトレースを停止させるためにNoneを返します。

トレース関数としてインスタンスメソッドが受け入れられます(また、とても便利です)。

イベントは以下のような意味を持ちます:

'call'
関数が呼び出されます(または、他のコードブロックに入ります)。グローバルトレース関数が呼び出されます。argNoneです。戻り値はローカルトレース関数を指定します。

'line'
インタプリタがコードの新しい行を実行しようとしているところです(ときどき、一行に複数行イベントが存在します)。ローカルトレース関数が呼び出されます。argNoneです。戻り値は新しいローカルトレース関数を指定します。

'return'
関数(または、コードブロック)が返ろうとしているところです。ローカルトレース関数が呼び出されます。argは返るであろう値です。トレース関数の戻り値は無視されます。

'exception'
例外が生じています。ローカルトレース関数が呼び出されます。argは三要素の(exception, value, traceback)です。戻り値は新しいローカルトレース関数を指定します。

例外が一連の呼び出し元を伝えられて行くときに、'exception'イベントは各レベルで生成されることことに注意してください。

コードとフレームオブジェクトについてさらに情報を得るには、Python Reference Manualを参照してください。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。