在Python中,如何获取当前帧?
在其他语言中,我可以通过反射api获得当前帧,以确定哪些变量是我当前所在范围的局部变量 在Python中有没有实现这一点的方法在Python中,如何获取当前帧?,python,Python,在其他语言中,我可以通过反射api获得当前帧,以确定哪些变量是我当前所在范围的局部变量 在Python中有没有实现这一点的方法 import sys sys._getframe(number) 当前帧的数字为0,向上帧的数字为1,依此类推 我对python中框架的最好介绍是 但是,请查看inspect模块,因为它可以处理最常见的帧操作。我使用这些小家伙进行调试和记录: import os import sys def LINE( back = 0 ): return sys.
import sys
sys._getframe(number)
当前帧的数字为0,向上帧的数字为1,依此类推
我对python中框架的最好介绍是
但是,请查看inspect模块,因为它可以处理最常见的帧操作。我使用这些小家伙进行调试和记录:
import os
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 )
最好的答案是使用该模块;不是
sys
中的专用函数
import inspect
current_frame = inspect.currentframe()
“python检查堆栈框架”的第一个Google结果返回您想要的答案;请注意,您可以使用locals()获取本地varsthank。但从该链接中需要注意的一点是:“CPython实现细节:此函数依赖于解释器中的Python堆栈框架支持,这并不能保证在所有Python实现中都存在。如果在没有Python堆栈框架支持的实现中运行,则此函数将不返回任何值。”
inspect.currentframe()
实现实际上调用了“sys中的私有方法”:sys.\u getframe(1)如果hasattr(sys,“\u getframe”)则调用None
。请参阅cpython代码库上的。这也意味着,即使调用sys
也可能不起作用。有可能获得帧的完整路径吗?