在Python中,如何获取当前帧?

时间:2009-07-16 20:45:55

标签: python

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

有没有办法在Python中执行此操作?

3 个答案:

答案 0 :(得分:36)

import sys    
sys._getframe(number)

当前帧的数字为0,帧的数量为1,依此类推。

我在python中找到的最佳介绍是here

但是,请查看检查模块,因为它最常用于框架。

答案 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 )