Просмотр локальных переменных в Обозревателе переменных Spyder

Я новичок в python и использую IDE Spyder. Одна особенность, которую я ценю в этом, - это variable explorer. Однако, основываясь на некоторых исследованиях, я обнаружил, что он показывает только глобальные переменные. Обходной путь, который я нашел для этого, с помощью модуля inspect:

import inspect

local_vars = {}

def main():
    global local_vars
    a = 2
    b = 4
    c = a+b
    local_vars = inspect.currentframe().f_locals
    return c

main()

это хорошо работает, однако у меня есть другие функции, которые вызываются из main (), и я хотел бы видеть эти переменные в проводнике переменных. Я передразнил то, что было сделано для переменных в основном функция и дикт не появляются. Я заметил, что когда я отключаю параметр "исключить неподдерживаемые типы данных" в параметрах проводника переменных Spyder, появляется второй dict с атрибутом правильного размера, однако я не могу открыть/просмотреть его. Есть идеи по поводу возможной работы? Это мое первое сообщение.

спасибо!!


вот рабочий пример моей проблемы, и я проследил ее до подзаголовков pylab.

import inspect, pylab

mainVars = {}

def main():
    global mainVars

    a = 1
    b = 2

    fig = pylab.figure()
    subPlot = fig.add_subplot(211)    ## line of interest

    pylab.close('all')

    mainVars = inspect.currentframe().f_locals

main()

когда линия интерес комментируется, дикт создается успешно и может быть просмотрен. Похоже, что объект создан с помощью fig.add_subplot () не обрабатывается должным образом dict. Похоже, это неподдерживаемый тип данных.

надеюсь, это поможет прояснить этот вопрос.

еще раз спасибо.

2 ответов


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

  1. перейдите в меню опций проводника переменных (последний значок слева направо на нем).

  2. выберите опцию исключить неподдерживаемые типы данных.

затем вы увидите все локальные переменные, сохраненные в f_locals dict, даже если вы не можете дважды щелкнуть по нему.


все эти обходные пути значительно затрудняют чтение кода для посторонних. У вас есть два варианта для проверки значений переменных внутри функции. Во-первых, вы можете просто вернуть переменные, которые вас интересуют:

def main():
    a = 2
    b = 4
    c = a+b

    return a, b, c

a, b, c = main()

во-вторых, если вы просто хотите проверить, что функция работает так, как ожидалось, или отладить ее, вы можете отладить функцию и войти в нее. Поэтому выберите Run / Debug из меню вместо запуска файла напрямую. Затем вы можете войти функция-значения переменных будут отображаться в проводнике переменных, когда выполнение находится внутри функции.