Python School
89.1K subscribers
2.13K photos
5 videos
537 links
Уроки по Python, которые упростят вам жизнь. Без идиотских туториалов.

Наши мемы для программистов: @conhum

Сотрудничество - @alivian

Канал сотрудничает с рекламным сервисом @Tgpodbor_official
Download Telegram
Валидируйте входные данные

Стоит фильтровать пользовательский ввод на наличие определенных символов. В разработке веб-приложений это особенно важно, потому что помогает предотвратить различные атаки, такие как SQL-инъекции и межсайтовый скриптинг (XSS).
Генераторы для экономии памяти

Отрабатывают эффективнее вместо самописных итераторов и вызываются с помощью специального синтаксиса — круглых скобок и конструкции i for i in range(10000).
%%html

Отрендерит ячейку как код HTML. Таким же образом исполнит код на Javascript, Perl или Ruby! Вот это действительно удивительное дополнение. Только используйте с осторожностью!
Более того, для учебы нередко пригождается верстка формул на специальном стандарте LaTeX, или справочной информации на Markdown. Для самых креативных предусмотрели даже рендеринг из .svg.
%rerun

Перезапускает предыдущую ячейку. В моей практике это полезно, чтобы пересобрать, к примеру, эмоциональную окраску (позитивная / негативная) реплики пользователя на базе библиотеки dostoevsky.
%precision

Указывает число знаков после запятой (decimal number) для числовых объектов.
%pip

Множество сторонних библиотек подключается к проекту именно этой командой. 

Помимо установки модуля по названию вы можете устанавливать некоторые инструменты с помощью ссылки на репозиторий. 
%debug

Активируeт интерактивный отладчик. 

Эта команда поддерживает два способа активации: перед выполнением кода (точка останова) и post-mortem (“посмертно”). Второй режим вы можете активировать, запустив %debug без каких-либо аргументов. Если только что произошло исключение, это позволит в интерактивном режиме проверить путь ошибки.
%autoawait

Позволяет использовать параллельные процессы. Ультраполезная фича, когда речь заходит о предварительной обработке данных, где на одном конвейере предстоит обработать разные столбцы крупного датафрейма.
%%capture

Cкрывает выходные данные ячейки. Это полезно в разделе, где вы устанавливаете необходимые библиотеки: сводка процесса установки занимает много места и часто не является важной информацией, так что ее можно скрыть.
%%time

Измеряет время выполнения ячейки. Это незаменимая утилита при оценке качества рефакторинга. Допустим, вы узнали, что цикл for замедляет код и переписали некоторый участок на перечисление (enumeration). Используя %%time, вы сможете с легкостью оценить прирост в общей скорости исполнения кода.
%lsmagic

Чтобы не тратить драгоценный умственный ресурс, запомните всего одну директиву – вывести список всех команд. Запустив %lsmagic,  получаем вот такой интересный список.

Magic Commands – это часть IPython, интерактивной оболочки с дополнительными командами, подсветкой кода и автодополнением. Команды выполняют разнообразные вспомогательные операции. Те, что начинаются с одного символа “%”, применяются к одной строке, другие — ко всей ячейке. Давайте разберем самые полезные “колабисту” мэджики.
Чтение TOML-конфигов

Этот формат стал популярен относительно недавно и даже претендует на замену JSON ввиду повышенной “человекочитаемости”.

Наконец, разработчики ЯП зарелизили встроенную библиотеку для чтения таких файлов.
Обогащение деталей ошибки

Теперь разработчик вправе дополнить ошибку кастомной заметкой.

Фича становится восхитительно полезной, когда типов ошибок много.
Группы исключений

Теперь можно объединять ошибки некоторых видов в группу и обрабатывать их одинаково.

Интересно, насколько ускорится процесс разработки, если вываливать на питониста сразу все причины падения? В выводе ниже одновременно и ошибка типа, и ошибка некорректного значения.
Ускоренный импорт библиотек

Если запустить следующий скрипт в Python версий 2.x.x и 3.11.4, то вы заметите солидный прирост в скорости подключения инструментов. В забавной мини-программе ниже выводится скорость импорта библиотек _io, marshal и проч., да еще и ASCII-графика с питончиком.
Улучшенный синтаксис параллельных процессов

Раньше мы вручную отслеживали все свои задачи в списке, прежде чем передать их в collect().

Теперь используем контекстный менеджер.
Прокачанный трейсинг ошибок

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

Теперь для указания на конкретный объект, вызвавший ошибку, используется строка с несколькими ^ (символ называется “циркумфлекс”). В сниппете выше мы просим поделить на ноль, и конечно, это вызывает ошибку.
__enter__ и_enter__ и
Эти методы используются для создания контекстных менеджеров (то есть объектов, которые можно использовать в блоке with), и позволяют управлять ресурсами, которые нужно освободить после использования.

При входе и выходе из блока with будут выведены соответствующие сообщения.
__getitem__ и_getitem__ и
Методы позволяют обращения к объекту по индексу или ключу, как если бы это был список или словарь.
__call__

Этот метод позволяет создать так называемые «вызываемые» объекты, то есть их можно вызывать как функции.