%debug
Активируeт интерактивный отладчик.
Эта команда поддерживает два способа активации: перед выполнением кода (точка останова) и post-mortem (“посмертно”). Второй режим вы можете активировать, запустив
Активируeт интерактивный отладчик.
Эта команда поддерживает два способа активации: перед выполнением кода (точка останова) и post-mortem (“посмертно”). Второй режим вы можете активировать, запустив
%debug
без каких-либо аргументов. Если только что произошло исключение, это позволит в интерактивном режиме проверить путь ошибки.%lsmagic
Чтобы не тратить драгоценный умственный ресурс, запомните всего одну директиву – вывести список всех команд. Запустив
Magic Commands – это часть IPython, интерактивной оболочки с дополнительными командами, подсветкой кода и автодополнением. Команды выполняют разнообразные вспомогательные операции. Те, что начинаются с одного символа “%”, применяются к одной строке, другие — ко всей ячейке. Давайте разберем самые полезные “колабисту” мэджики.
Чтобы не тратить драгоценный умственный ресурс, запомните всего одну директиву – вывести список всех команд. Запустив
%lsmagic
, получаем вот такой интересный список.Magic Commands – это часть IPython, интерактивной оболочки с дополнительными командами, подсветкой кода и автодополнением. Команды выполняют разнообразные вспомогательные операции. Те, что начинаются с одного символа “%”, применяются к одной строке, другие — ко всей ячейке. Давайте разберем самые полезные “колабисту” мэджики.
Прокачанный трейсинг ошибок
Классической проблемой новичка становится отладка программы: по трейсбеку (описанию) определить, в чем дело, бывает весьма затруднительно.
Теперь для указания на конкретный объект, вызвавший ошибку, используется строка с несколькими ^ (символ называется “циркумфлекс”). В сниппете выше мы просим поделить на ноль, и конечно, это вызывает ошибку.
Классической проблемой новичка становится отладка программы: по трейсбеку (описанию) определить, в чем дело, бывает весьма затруднительно.
Теперь для указания на конкретный объект, вызвавший ошибку, используется строка с несколькими ^ (символ называется “циркумфлекс”). В сниппете выше мы просим поделить на ноль, и конечно, это вызывает ошибку.
Охватывающая (Enclosing)
Позволяет «выходить» из локальной о.в. на верхний уровень — но не глобальный. Допустим, у нас есть функция
Такие звери нужны, если вы используете вложенные функции, что в целом случается нечасто. Самый простой пример употребления – цикл внутри цикла, счетчик i и снаружи, и внутри.
Позволяет «выходить» из локальной о.в. на верхний уровень — но не глобальный. Допустим, у нас есть функция
func1()
, в которой определена еще одна функция func2()
. Оператор nonlocal
позволяет внутренней переменной enclosing
выйти на уровень видимости «верховной» функции.Такие звери нужны, если вы используете вложенные функции, что в целом случается нечасто. Самый простой пример употребления – цикл внутри цикла, счетчик i и снаружи, и внутри.
Локальная (Local) и глобальная (Global)
Сразу видно глобальную переменную – global. Она удобна в использовании, но не безопасна. При разрастающемся коде легко добиться ситуации, что переменная меняется несколько раз, и это создает лазейки для ее перезаписи всем желающим. Впрочем, за семь лет программирования проблемных ситуаций на этой почве у меня не возникло ни разу. Но информационной безопасностью не занимаюсь.
Заполучить вторую переменную local в сниппете ниже можно только при вызове func().
Сразу видно глобальную переменную – global. Она удобна в использовании, но не безопасна. При разрастающемся коде легко добиться ситуации, что переменная меняется несколько раз, и это создает лазейки для ее перезаписи всем желающим. Впрочем, за семь лет программирования проблемных ситуаций на этой почве у меня не возникло ни разу. Но информационной безопасностью не занимаюсь.
Заполучить вторую переменную local в сниппете ниже можно только при вызове func().