呼び出された方法のソースコードを判別できる関数を作りたい。私は、これを一般的に検査モジュールで行う方法を知っています。たとえば、この質問はうまく機能し、lines
以下に示すように変数に希望の出力を提供します。
def hello(x):
frame,filename,line_number,function_name,lines,index=\
inspect.getouterframes(inspect.currentframe())[1]
print(frame,filename,line_number,function_name,lines,index)
問題は、このソリューションが対話型のコマンドラインセッションでは機能しないことです。たとえば、コマンドラインからの結果は次のようになります。
>>> y = hello(7)
(<frame object at 0x01ECA9E8>, '<stdin>', 1, '<module>', None, None)
問題は、ソースファイルが'<stdin>'
であるため、lines
変数がであるということですNone
。y = hello(7)
対話型セッション中に文字列を含む結果を見つけるために呼び出し回線にアクセスするにはどうすればよいですか?