Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何获取当前帧?_Python - Fatal编程技术网

在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.

在其他语言中,我可以通过反射api获得当前帧,以确定哪些变量是我当前所在范围的局部变量

在Python中有没有实现这一点的方法

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
也可能不起作用。有可能获得帧的完整路径吗?