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

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

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

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

РКН: clck.ru/3G6pBb
加入频道
Логирование в Python с помощью Logzero. Ротация лог-файла

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

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

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

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

В Python мы обычно помещаем ключевое слово pass в качестве заполнителя для ненаписанного кода. Но мы также можем использовать многоточие для этой цели.
Список всех переменных

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

Для того чтобы получить переменные определенного типа, мы должны указать этот тип после магической команды. Приведенный выше код отображает все переменные строкового типа в качестве выходных данных.
Выполнение html-скрипта

%% html позволяет нам писать html-код в ячейке. Теперь ячейка будет действовать как html-редактор с html-выводом ячейки.

Следующий код состоит из простой таблицы, созданной в формате html. Заметьте, что html-вывод отображает ожидаемую таблицу.
Отображение графиков Matplotlib

%matplotlib inline
 — это самая популярная магическая команда. Она позволяет отображать в блокнотах графики Matplotlib. Эта команда активирует интерактивную поддержку Matplotlib для блокнота Jupyter.
Подробная информация об объекте

%pinfo предоставляет подробную информацию об объекте, который передается вместе с ним. Она похожа на функцию object?.
Генератор

generator — тоже итератор, но его ключевое свойство — ленивые вычисления. Это классическая концепция в информатике, и её переняли многие языки программирования, такие как Haskell. Основная идея этой концепции звучит как вызов-по-необходимости. Отложенные вычисления могут приводить к снижению доступной процессу памяти. 

Генератор — это итератор, который работает в режиме обработки по необходимости. Мы не будем производить вычисления и сохранять значения сразу, а сделаем их “на лету”, когда будут выполняться итерации. 
Ограничение итераций

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

В Python итерируемый объект — это объект, над которым производятся так называемые проходы (итерации). Например, как в цикле for.
Большинство наборных структур данных являются итерируемыми объектами. Это списки, кортежи, наборы. Например, ниже мы создаём список и проходимся по его элементам по очереди.
Yield

Другой способ создать generator — использовать функцию генератора. Мы берём ключевое слово yield, чтобы вернуть generator в функции.
Давайте посмотрим, как сработает эта функция на fib, где возвращается generator с n числами Фибоначчи. 
Поток данных

С генератором мы создадим структуру данных с бесконечным количеством элементов. Этот вид последовательности элементов данных называется в информатике потоком данных (или “стрим”). С его помощью мы можем выражать концепции бесконечных последовательностей математическими методами. 
Декораторы в Python: Способ разделения задач

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

Мы можем сами определить декораторов. А также есть множество замечательных встроенных декораторов, готовых к использованию.

Например, статические методы в классе Python не привязаны к экземпляру или классу. Они включены в класс просто потому, что они логически принадлежат ему.
Размещение вашего скрипта на Python на Ubuntu-инстансе

Мой любимый метод закачки скрипта на Python на инстанс Ubuntu — это использовать Git.

Если есть конфигурационные файлы, которые нужны на вашем Ubuntu-инстансе, и вы не хотите хранить их на github, для переноса пользуйтесь Amazon S3.
Установка Python3.7 и PIP

Для установки Python и PIP я бы рекомендовал пользоваться веб-SSH через дашборд Lightsail.

А в папке репозитория выполните следующую команду. Она запустит код, приведённый ниже и установит Python3.7 вместе с PIP.
Установка библиотек Python

Следующим шагом установите питоновские библиотеки praw и pandas. Запустите серийный файл python_libraries.sh.

Praw — это враппер для API Python reddit.

Pandas — для манипуляций с данными и их анализа.
Списковое включение: Создайте список в одной строке кода

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

Со списковым включением мы можем поместить циклы for и условия if в одну строку кода для создания списка на Python:
Настройка службы Cron

Программная утилита Cron — это планировщик времени запуска служб в компьютерных ОС наподобие Unix. Пользователи, которые занимаются установкой и поддержкой программных окружений, пользуются Cron для планирования служб (команд или скриптов оболочки). Они запускают их периодически в определённое время, дни или другие интервалы. Это типичная автоматизация системной поддержки или администрирования, тем не менее природа общего назначения этого ПО делает его полезным для таких вещей, как скачивание файлов из интернета и загрузка почты через равные интервалы.
Создание задания Cron

Настройте редактор на значение vim при помощи такой команды. Войдите в Vim и отредактируйте службы Cron. В этой точке Vim запустится, а вы сможете вносить изменения в свои службы Cron.
Автоматизация скриптов на Python при помощи AWS Lightsail

Теперь вы закончили и ваш скрипт будет запускаться с интервалом, определённым в службе Cron. 

Если хотите проверить их, можете запустить командный crontab -l. Так вы увидите текущие службы Cron.