В других языках я могу получить текущий кадр через api отражения, чтобы определить, какие переменные являются локальными для области, в которой я сейчас находится.
Есть ли способ сделать это в Python?
Ответ 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.