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

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

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

Канал сотрудничает с рекламным сервисом @Tgpodbor_official

РКН: clck.ru/3G6pBb
加入频道
Progress

Progress помогает создавать индикаторы состояния с минимальными усилиями.
tqdm

tqdm является чуть более современным аналогом progress, выполняющим те же функции. В tqdm есть своя изюминка — им можно пользоваться в командной строке.
IPython

IPython — это ядро блокнотов Jupyter. Jupyter Notebook — это веб-приложение с открытым кодом, которое позволяет создавать и обмениваться документами с живым кодом, уравнениями, визуализациями и текстовыми описаниями.
Homeassistant

Если вы интересуетесь домашней автоматизацией, то однозначно попробуйте Home Assistant! Более подробная информация доступна на их сайте. Если получится, то саму платформу можно скачать с Raspberry Pi. Это простой и безопасный способ начать работу. Я установил Home Assistant на более мощный сервер — внутри Docker-контейнера.
Beautiful soup

Когда вы вытаскиваете HTML с какого-то сайта, то сначала проводите его разбор и отсекаете все ненужное. Beautiful Soup — это Python-библиотека по сбору данных из HTML и XML-файлов. В ней представлены простые методы для навигации, поиска и изменения дерева разбора, или парсинга. Это очень мощная библиотека, которая умеет обрабатывать все виды HTML, даже если он сломан. Уж поверьте моему опыту, HTML ломается довольно часто, поэтому такая функция окажется как нельзя кстати.
Flask

Flask — это моя любимая библиотека для создания быстрых веб-сервисов или простых сайтов. Flask — это микрофреймворк. Его задача — сделать ядро простым и расширяемым. Всего для Flask написано свыше 700 расширений — как официальных, так и созданных сообществом.

Если вы знаете, что в скором времени займетесь разработкой крупного веб-приложения, то стоит присмотреться к полноценному фреймворку. Самым популярным в этой категории считается Django.
NotImplemented

Хотя ошибка NotImplemented является одной из самых распространённых, я считаю важным напомнить о ней в очередной раз. Выброс NotImplemented в Python не приводит к выбросу ошибки NotImplemented, вместо этого выбрасывается TypeError.
Копирование!

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

Аргументы по умолчанию в Python задаются один раз при определении функции. Следовательно, каждый элемент используется при каждом вызове, то есть данные, содержащиеся в переменной, изменяемы при каждом обращении к ним в функции.
4 ситуации из жизни лямбда-функций в Python. Сортировка последовательности данных 

Первый допустимый вариант использования — сортировка последовательности данных при помощи встроенной функции sorted(). Если вы знакомы с методами списков объектов, то, скорее всего, вам известен похожий метод sort(), который может сортировать объекты в списке в нужном порядке. Функция sorted() используется во многих ситуациях. 
4 ситуации из жизни лямбда-функций в Python. Нахождение минимальных и максимальных значений 

Для нахождения минимального и максимального значений в наборе данных можно использовать две встроенные функции, а именно min() и max(). Принцип использования обоих методов идентичен. В большинстве случаев мы предоставляем итерируемый объект, состоящий из нескольких элементов. Задавая аргумент key, мы можем получить искомые минимальные и максимальные значения по тому же принципу, что и в случае с функцией sorted()
4 ситуации из жизни лямбда-функций в Python. Использование в качестве фабричной функции 

Вероятно, вам известно, что помимо встроенного типа словаря dict, в нашем распоряжении есть еще другой словарь под названием defaultdict. Этот класс является подклассом типа dict, который доступен в модуле collections. Конструктор defaultdict представляет собой defaultdict([default_factory[, ...]]). default_factory вызывается для создания значения при условии, что в словаре еще нет заданного ключа. 
4 ситуации из жизни лямбда-функций в Python. Использование лямбда с функциями высшего порядка (не самый лучший способ) 

Под функциями высшего порядка подразумеваются такие функции, как map() и filter(). Важно помнить, что всё в Python является объектом, включая функции. Функции, принимающие другие функции в качестве аргументов или возвращающие их в качестве результата, называются функциями высшего порядка. 
Логирование в Python с помощью Logzero. Установка

Logzero — это пакет Python, созданный Крисом Хагером, который упрощает отображение информации и сведений об отладке в качестве оператора print в Python 2 и 3. Чтобы установить logzero с помощью pip, выполните следующий код.
Логирование в Python с помощью Logzero. Запись логов в файл

Многие пользователи Python предпочитают записывать логи в файл. При запуске системы их можно просматривать для проверки ошибок и обслуживания. Вы также можете установить файл для сохранения всех лог-записей в legzero.

Мы импортируем логгер и лог-файл из logezero. Метод logfile используется, чтобы настроить лог-файл для сохранения хранящихся в логе записей.
Логирование в Python с помощью Logzero. Базовый пример

Импортируем логгер из logzero в файл python и попробуем 4 примера уровней логирования. Как видим, каждый уровень имеет свой цвет, что значительно упрощает его определение.
Логирование в Python с помощью Logzero. Установка минимального уровня логирования

Установка уровня логирования предполагает выбор степени важности данного лог-сообщения. Изменить уровень логирования для обработчика файла можно с помощью аргумента loglevel в методе logfile.

В приведенном примере мы установили loglevel как warning. Следовательно все лог-записи ниже уровня warning не будут сохранены в лог-файл.
Логирование в Python с помощью Logzero. Ротация лог-файла

Не стоит сохранять все записи в один лог-файл, поскольку он становится массивным и увеличивает нагрузку на систему.

Вы можете использовать параметры maxBytes и backupCount для ротации файла с заранее заданным размером. Когда размер будет превышен, файл закроется, а новый файл для вывода откроется автоматически. Переключение происходит каждый раз, когда длина текущего лог-файла составляет почти maxBytes. Если maxBytes или backupCount равен нулю, переключение не происходит.
Логирование в Python с помощью Logzero. Экземпляры пользовательских логгеров

Вместо использования логгера по умолчанию, можно настроить экземпляры логгера с помощью logzero.setup_logger(..). Он возвращает полностью настроенный экземпляр логгера с различными параметрами, такими как имя, имя лог-файла, форматирование, maxBytes, backupCount и уровень логирования.
Логирование в Python с помощью Logzero. Установка пользовательского форматирования

Лог-запись можно отформатировать на свое усмотрение. Есть несколько способов: вы можете включить дату, время и уровень логирования в свой формат, чтобы знать, когда и на каком уровне был отправлен лог.