Python Academy
49.5K subscribers
1.08K photos
2 videos
374 links
Python Academy — один канал вместо тысячи учебников

Чат канала: @python_academy_chat

Сотрудничество: @zubar89

Канал включён в перечень РКН: https://rkn.link/TVu
加入频道
Сохраняем данные с помощью pickle

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

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

Однако будьте осторожнее, pickle не защищен от ошибочных или вредоносных данных. Никогда не извлекайте данные, полученные из ненадежных или не прошедших проверку подлинности источников.
​​"Быстрый" контейнер deque

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

К тому же, контейнер deque обеспечивает линейную сложность O(1) для операций добавления и выталкивания по сравнению со стандартным списком, у которого сложность по времени для тех же операций составляет O(n).

Также для deque есть возможность использовать такие стандартные функции, как sum, min, max и другие.
​​Метод get для словарей

У словарей есть метод get, который возвращает значение по ключу, переданному в аргументах функции.

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

В качестве примера создадим словарь с именами, которые можно получить по определенным значениям, и напишем функцию, которая возвращает приветственную фразу со взятием имени из этого словаря.
7 фишек Python, максимально улучшающие твой код

Выходные – отличное время для изучения нового материала. В этот раз Святослав подготовил для вас кое-что крайне интересное и уникальное. Приятного прочтения ✌️

Читать 10 минут
​​Форматирование строк

Привет, в этом посте разберем возможные в Python методы форматирования строк. Все примеры использования можете посмотреть на прикрепленной ниже картинке.

Самый древний и уже редко используемый способ – с помощью оператора %. Написание %s и %d зависит от того, что мы туда передаем и что хотим увидеть в итоге, но это уже тема отдельного поста.

В Python 2.6 появился метод .format() с немного отличающимся синтаксисом от существующего оператора %. К слову, этот метод активно используется и по сей день, в отличии от его предшественника.

Начиная с версии Python 3.6, доступны f-строки – свежий и наиболее производительный способ форматирования строк.
​​Получаем срез из бесконечного генератора

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

Для начала создадим сам генератор fib, уже немного знакомый вам по посту, где мы использовали lru_cache, правда там была рекурсивная функция. Этот генератор позволяет (за неимением другого слова) "генерировать" числа из последовательности Фибоначчи.

Чтобы получить желаемый срез, импортируем модуль itertools, в котором уже есть удобная функция islice, позволяющая осуществить срез генератора fib.
​​Назначение функций по условию

Наверняка большинство из вас знакомы с тернарным оператором, позволяющим записать простое условное выражение с if:

A = Y if X else Z

Интерпретатор выполняет выражение Y, если объект XTrue, и Z, если XFalse.

Но оказывается, тернарный оператор можно использовать не только для переменных, но и для функций.
​​Функция map

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

На вход принимает два обязательных аргмумента: функция-обработчик и итерируемый объект. Суть map’a заключается в том, что он применяет переданную функцию к каждому элементу последовательности. А возвращает так называемый map-объект, который в дальнейшем можно конвертировать в обычный список и не только.

Обратите внимание, в примере на картинке мы не пишем скобки у функции add_five при вызове map – это означает то, что мы передаем объект функции, а не результат её выполнения.
​​Как сделать так, чтобы функция вернула True?

Менять тело функции нельзя. Требуется просто найти такое значение, при котором функция вернёт True.

Предлагайте свои варианты в нашем чате. А для нетерпеливых прикрепляем ссылку на наш вариант.

Решение задачи
Работа с процессами в Python

С появлением многоядерных процессоров стала общеупотребительной практика распространять нагрузку на все доступные ядра. Существует два основных подхода в распределении нагрузки: использование процессов и потоков. О первом мы как раз сейчас и поговорим.

Читать 6 минут
​​Разница между == и is

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

Итак, оператор == проверяет равенство значений двух объектов. А оператор is в свою очередь проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти.

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

Предположим, что требуется создать новый список, элементами которого будут являться квадраты чисел данного списка. Большинство сразу же напишут простенький цикл for.

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

На прикрепленной картинке я привел две достойные альтернативы, а именно использование генератора списков и функции map. В обоих вариантах не только код становится короче и выразительнее, но и заметно повышается производительность.
Здоровье программиста

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

Читать 7 минут
​​"Быстрый" контейнер deque

Встроенных списков в Python иногда может не хватать, поэтому покажем одну хорошую альтернативу. Deque может быть реализован c помощью модуля collections.

Deque предпочтительнее, чем обычный список, в тех случаях, когда нам нужны более быстрые операции добавления и вытягивания элементо из обоих концов контейнера, поскольку deque обеспечивает линейную сложность O(1) для операций добавления и выталкивания по сравнению со списком, у которого сложность по времени для тех операций составляет O(n).

Также для deque есть возможность использовать стандартные функции по типу sum, min, max и тому подобные.
Привет, в ближайшее время мы анонсируем наш новый курс по Python, где будут только продвинутые темы (ООП, декораторы, асинхронность и т. п.). Какая цена вас бы устроила?
Anonymous Poll
44%
500-1000
6%
1000-2000
3%
2000-3000
3%
3000+
42%
Зависит от содержания
1%
Напишу в личные сообщения
​​Контекстные менеджеры

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

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

Чтобы каждый раз не вызывать метод close мы можем воспользоваться контекстным менеджером функции open, который автоматически закроет файл после выхода из блока.
Вирус локер на Python и Tkinter

Локер – популярный вид вирусов, который блокирует компьютер, и чаще всего злоумышленники просят что-либо взамен на разблокировку. Именно это мы сегодня и будем реализовывать.

Читать 4 минуты
​​Создаём свой контекстный менеджер

Привет, в четверг на канале вышел небольшой пост про контекстные менеджеры. Сейчас разберём, как их можно реализовать.

В любом контекстном менеджере должны быть определены методы __enter__ и __exit__. В качестве примера создадим подобие уже существующего open.

Метод __enter__ вызывается автоматически и возвращает объект файла. После того, как блок with заканчивается, также вызывается метод __exit__, который закрывает файл.

А более подробно мы рассказываем про эту тему в нашем курсе по продвинутым темам.
​​Создание функций на основе других с "замороженными" параметрами

Привет, сегодня поговорим про очень важную функцию partial из пакета functools. Более подробно мы рассказываем про это в курсе, но сейчас дадим краткое описание работы.

Данная функция принимает в качестве первого аргумента любую другую функцию, а дальше параметры, которые будут автоматически переданы в эту функцию при вызове уже новой функции, которую вернёт partial.

Например, можем создать функцию, которая умножает два числа, а потом "заморозить" один аргумент, как на картинке.
​​Функция itertools.cycle

Напоминаю, что у нас всё ещё идёт набор на курс, который начинается уже в этот понедельник. А сейчас покажу вам кое-что интересное из курса.

В лекции, посвященной итераторам и генераторам, мы также показываем полезные функции из пакета itertools. К примеру, метод cycle из последовательности ['red', 'white', 'blue'] генерирует повторяющуюся бесконечную.

А далее, например, можно воспользоваться islice. Он возвращает конечный итератор из любой большой или даже бесконечной последовательности.
​​Последний релиз Python 2.x

Кстати говоря, не так давно вышла последняя версия Python 2.7, а именно Python 2.7.18.

Эта версия является особенным выпуском. Я имею в виду, конечно, тот факт, что "2.7.18" является ближайшим номером версии Python которая примерно равна числу e, или числу Эйлера.

Менее трансцендентное свойство Python 2.7.18 заключается в том, что это последний выпуск Python 2.7. и, следовательно, последний выпуск Python 2.

Любителям CPython пришло время попрощаться с Python 2. Эта версия поддерживалась почти 10 лет параллельно с обратно-несовместимыми версиями Python 3. Теперь же остаётся только одна версия языка, которая продолжит развиваться.

Скачать последнюю версию языка можно по этой ссылке.