В Python как получить текущий кадр? - PullRequest
26 голосов
/ 17 июля 2009

В других языках я могу получить текущий кадр через API отражения, чтобы определить, какие переменные являются локальными для области, в которой я в настоящее время нахожусь.

Есть ли способ сделать это в Python?

Ответы [ 3 ]

36 голосов
/ 17 июля 2009
import sys    
sys._getframe(number)

Число 0 для текущего кадра и 1 для кадра вверх и т. Д.

Лучшее введение, которое я нашел для фреймов в python: здесь

Тем не менее, посмотрите на модуль inspect, так как он выполняет самые распространенные действия с кадрами.

27 голосов
/ 12 мая 2013

Лучшим ответом было бы использование модуля inspect ; не частная функция в sys.

import inspect

current_frame = inspect.currentframe()
23 голосов
/ 17 июля 2009

Я использую этих маленьких парней для отладки и регистрации:

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 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...