Рубрики
Без рубрики

Как просматривать все ваши переменные в ноутбуке Jupyter

Поднимите тебу по тетрадям Jupyter в рамках разработчиков Python, и вы, вероятно, получите различные … с меткой Python.

Поднимите теут тетради Jupyter в рамках разработчиков Python, и вы, вероятно, получите о них множество мнений. Многие разработчики считают, что использование ноутбуков может продвигать некоторые вредные привычки, вызвать путаницу и привести к уродливому коду. Очень распространенная проблема, поднятая идея скрытого состояния в ноутбуке. Это скрытое состояние может показывать несколько способов, но один общий способ осуществляется выполнением ноутбуков из строя. Это часто происходит во время развития и разведки. Это может быть общим изменение вызова, выполнить его несколько раз и даже удалять его. Как только ячейка удаляется или изменена и заново выполняется, скрытое состояние из этой клетки остается в текущем сеансе. Переменные, функции, классы и любой другой код продолжат существовать и, возможно, влияют на код в других ячейках.

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

Надувательство Это

Если ваша ноутбук невелик, и быстро работает, вы всегда можете перезапустить свое ядро и снова запустить весь код. Это имитирует более типичное развитие тестирования единиц или запуск сценариев из командной строки (или в интеграции IDE). Если вы просто запустите новый экземпляр Python с сохраненным кодом, не может существовать скрытое состояние, а выход будет последовательным. Это имеет смысл для небольших ноутбуков, где вы можете быстро визуализировать весь код и проверять его на проверке.

Но это не может быть практично для всех случаев.

Просмотреть его

Если разработчик не хочет постоянно перезапустить интерпретатор, они также могут просмотреть то, что является текущим состоянием. Давайте пройдемся по нескольким способам сделать это, от простого до более сложности. Обратите внимание, что этот пример кода использует Jupyter 6.15 с iPython 7.19.0 в качестве ядра.

Во-первых, давайте сделаем некоторые данные.

import numpy as np

def a_function():
    pass

class MyClass:
    def __init__ (self, name):
        self.name = name

var = "a variable"
var2 = "another variable"
x = np.ones(20)

Теперь, когда ячейку с вышеуказанным кодом Python я могу осмотреть состояние моего текущего сеанса, либо выполняя одну ячейку одним из переменных, в нем или с помощью iPython Дисплей функция. Ячейка будет отображать значение последней строки в ячейке (если только вы не добавите ; в конце строки). При использовании интерпретатора по умолчанию Дисплей недоступен, но выполнение любой переменной покажет вам значение (на основе его __repr __ метод).

display(a_function)
display(var2)
display(MyClass)
display(x)
var

'another variable'
__main__.MyClass
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1.])
'a variable'

Но что, если код ушел?

Хорошо, этот выше метод очевиден, мы можем просмотреть элементы, которые мы знаем, существуют. Но как мы находим объекты, которые мы не знаем, существуют? Может быть, мы удалили ячейку, которая создала значения, или если мы используем командную строку iPython, наша история больше не видима для этого кода. Или, может быть, мы отредактировали камеру несколько раз и повторно выполняли ее и изменили некоторые имена переменной.

Одной из функций, чтобы рассмотреть это Dir Встроенный. Когда вы вызываете эту функцию без аргументов, он вернет список всех названий переменной в локальном объеме. Если вы поставляете модуль или класс, он перечисляет атрибуты модуля или класса (и его подклассов).

Когда мы сделаем это, мы видим, что наши переменные все присутствуют. Примечание. Это доступно в стандартном Python, а не просто iPython.

dir()
['In',
 'MyClass',
 'Out',
 '_',
 '_2',
 '__',
 '___',
 ' __builtin__',
 ' __builtins__',
 ' __doc__',
 ' __loader__',
 ' __name__',
 ' __package__',
 ' __spec__',
 '_dh',
 '_i',
 '_i1',
 '_i2',
 '_i3',
 '_ih',
 '_ii',
 '_iii',
 '_oh',
 'a_function',
 'exit',
 'get_ipython',
 'np',
 'quit',
 'var',
 'var2',
 'x']

WOAH, там тоже много других вещей. Большинство из переменных добавляются iPython и относятся к истории команды, поэтому, если вы запускаете этот образец с интерпретатором по умолчанию, не будет не так много переменных. Кроме того, некоторые функции загружаются при запуске (и вы можете настроить iPython, чтобы загрузить другие). Другие объекты существуют, потому что Python размещает их в глобальном масштабе.

Обратите внимание, что специальная переменная _ это значение последней выполненной ячейки (или линии).

Использование глобалей и местных жителей

Есть две другие функции, которые полезны: Местные жители и глобал Отказ Это вернет таблицу символов, словарь, ключ от имени переменных и содержащих значения. Для глобали Это значения для текущего модуля (при вызове в функции или способе, модуль представляет собой тот, где была определена функция, а не там, где она была выполнена). Местные жители такой же, как глобал При вызове на уровне модуля, но свободные переменные возвращаются при вызове в функциональных блоках.

Примечание, не модифицируйте эти таблицы, он повлияет на бег переводчик.

locals() # get the full dictionary
globals()['var'] # grab out a single value
'a variable'

Могу ли я увидеть что-то немного приятнее?

Работа с большим словарем, в котором есть некоторые дополнительные значения, добавленные iPython, могут быть не самым простым способом проверки ваших переменных. Вы можете построить функцию, чтобы украсить таблицу символов, но к счастью уже есть уже хорошие магии для этого. (Magics – это специальные функции в iPython, смотрят здесь для быстрого вступления в магию и специально AutoReload Magic.)

Jupyter/iPython предоставляют три полезных волшебства для проверки переменных. Во-первых, есть % кто Отказ Без аргументов он печатает все интерактивные переменные с минимальным форматированием. Вы можете поставить типы, чтобы показать переменные, соответствующие данному типу.

%who
MyClass a_function np var var2 x

# just functions
%who function
a_function

% WHO_LS Магия делает то же самое, но возвращает переменные в виде списка. Это также может ограничить то, что вы видите по типу.

%who_ls
['MyClass', 'a_function', 'np', 'var', 'var2', 'x']
%who_ls str function
['a_function', 'var', 'var2']

Последняя магия – % whos Он предоставляет хорошую отформатированную таблицу, которая покажет вам переменную, тип и строковое представление. Он включает в себя полезную информацию о Numpy и Pandas Data Structures.

%whos
Variable Type Data/Info
---------------------------------------
MyClass type 
a_function function 
np module kages/numpy/ __init__.py'>
var str a variable
var2 str another variable
x ndarray 20: 20 elems, type `float64`, 160 bytes

Необработанный вывод

Теперь, если вы хотите получить Fancy, у Jupyter есть расширение, доступное через nbextensions Отказ Расширение переменного инспектора даст вам приятный вариант для просмотра переменных в выходе, аналогичном % whos Выход выше. Для разработчиков, используемых для IDE с автоматическим обновлением переменного инспектора, это расширение может оказаться полезным и стоит проверить.

Удаление переменных

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

del var2
%whos
Variable Type Data/Info
---------------------------------------
MyClass type 
a_function function 
np module kages/numpy/ __init__.py'>
var str a variable
x ndarray 20: 20 elems, type `float64`, 160 bytes

Резюме

Теперь вы знаете о нескольких инструментах, которые вы можете использовать для поиска переменных в текущем сеансе Python. Используйте их, чтобы лучше понять код, который вы уже выполняли, и, возможно, сэкономить немного времени.

Пост Как просмотреть все ваши переменные в ноутбуке Jupyter появился первым на Wrighters.io Отказ

Оригинал: “https://dev.to/wrighter/how-to-view-all-your-variables-in-a-jupyter-notebook-a49”