Подтвердить что ты не робот

В Python, как получить текущий кадр?

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

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

4b9b3361

Ответ 1

import sys    
sys._getframe(number)

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

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

Однако посмотрите на модуль проверки, так как он наиболее распространяет вещи, которые вы хотите делать с кадрами.

Ответ 2

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

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 )

Ответ 3

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

import inspect

current_frame = inspect.currentframe()

Ответ 4

Смотрите функцию dir.

извините - на самом деле это не относится к кадру, но по-прежнему полезно!