在其他语言中,我可以通过反射api获取当前帧,以确定哪些变量是我当前所在范围的本地变量。
有没有办法在Python中执行此操作?
答案 0 :(得分:36)
答案 1 :(得分:27)
最好的答案是使用inspect模块;不是sys
中的私人功能。
import inspect
current_frame = inspect.currentframe()
答案 2 :(得分:22)
我使用这些小家伙进行调试和记录:
import sys
def LINE( back = 0 ):
return sys._getframe( back + 1 ).f_lineno
def FILE( back = 0 ):
return sys._getframe( back + 1 ).f_code.co_filename
def FUNC( back = 0):
return sys._getframe( back + 1 ).f_code.co_name
def WHERE( back = 0 ):
frame = sys._getframe( back + 1 )
return "%s/%s %s()" % ( os.path.basename( frame.f_code.co_filename ),
frame.f_lineno, frame.f_code.co_name )