Получить локальных пользователей от вызова пространства имен в Python

Я хочу получить локальные переменные из Python из вызываемой функции. Есть какой-либо способ сделать это? Я понимаю, что это не подходит для большинства программ, но я в основном создаю отладчик. Например:

def show_locals(): # put something in here that shows local_1. local_1 = 123 show_locals() # I want this to show local_1. 

Что я помещаю в тело show_locals ? Если мне нужно изменить вызывающий оператор, какова минимальная модификация, которую я могу сделать?

Примечание: это должно работать, когда show_locals находится в другом модуле для своего вызывающего.

2 Solutions collect form web for “Получить локальных пользователей от вызова пространства имен в Python”

Если вы пишете отладчик, вам нужно будет активно использовать модуль inspect :

 def show_callers_locals(): """Print the local variables in the caller's frame.""" import inspect frame = inspect.currentframe() try: print(frame.f_back.f_locals) finally: del frame 

Вы используете встроенный python, dir () или vars ():

вары (объект)

Примеры использования dir () см. В этом сообщении.

Примеры использования vars:

 >>> class X: ... a=1 ... def __init__(self): ... b=2 ... >>> >>> vars(X) {'a': 1, '__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x100488848>} >>> >>> vars(X()) {} 

Потенциально проблематичный факт: новые классы стиля не возвращают одинаковый результат

 >>> class X(object): ... a=1 ... def __init__(self): ... b=2 ... >>> >>> vars(X) <dictproxy object at 0x1004a1910> >>> vars(X()) {} 

Кроме того: для созданного экземпляра класса (новый и старый стиль), если вы добавите переменную после создания экземпляра, vars вернет запрос объекта так:

 >>> x = X() >>> xc = 1 >>> vars(x) {'c': 1} >>> 

См .: http://docs.python.org/library/functions.html#vars

  • Python Flask, как установить тип содержимого
  • Пример sqlalchemy фляжки вокруг существующей базы данных
  • Как обновить все регионы в кеше Beaker в Pyramid?
  • Ошибка разблокировки типа при изменении моделей SqlAlchemy
  • Использование колбы / схемы для некоторых статических страниц
  • Как продолжить задачу, когда Fabric получает сообщение об ошибке
  • Установка гистограммы с помощью python
  • Гистограмма графика в Python
  •  
    Interesting Posts for Van-Lav

    IPython Notebook – python3 не найден после удаления Anaconda3 для Anaconda

    Потребление памяти функции NumPy для стандартного отклонения

    XPath: Найти элемент HTML по * plain * text

    Каков самый простой способ расширить массив numpy в 2-х измерениях?

    Сценарий истории Интернета для Google Chrome

    Оценка работы Tensorflow очень медленная в цикле

    Определенный способ сопоставления Stata с взвешенной командой xtile с использованием Python?

    Ошибка? Не удается определить

    Создайте список каталогов в стиле дерева в Python

    Сравнение R, statmodels, sklearn для задачи классификации с логистической регрессией

    Остановка операции Reduce () в середине пути. Функциональный способ выполнения частичной текущей суммы

    Как интегрировать Pyramid 1.1 и Mongo DB – как можно меньше строк

    Python анализирует int из строки

    Преимущества наличия статической функции, такой как len (), max () и min () по унаследованным вызовам метода

    Как официально отказаться от пакета pip

    Python - лучший язык программирования в мире.