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

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

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

Канал включён в перечень РКН: https://rkn.link/TVu
加入频道
Привет, в ближайшее время мы анонсируем наш новый курс по 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. Теперь же остаётся только одна версия языка, которая продолжит развиваться.

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

Новый способ присваивания выражения (:=), или оператор «морж», был самой обсуждаемой функцией, представленной в Python версии 3.8. Новое дополнение к языку было предложено в PEP 572.

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

Но фишка заключается в том, что вся эта конструкция, скажем так, возвращает присвоенное значение, как это делают обычные функции. А если хотите практические примеры, то напишите плюсик в чат.

#тонкости
Моржовый оператор – примеры

В предыдущем посте мы обсудили синтаксис нового оператора присваивания. В чате появилось достаточное количество просьб продолжить, поэтому в этом посте мы рассмотрим частные случаи, когда морж в коде выглядит солидно.

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

#тонкости
3 трюка с itertools

Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции – chain. Она позволяет "склеивать" несколько итерируемых элементов в один.

Далее, accumulate. Эта функция немного похожа на reduce, но вместо того, чтобы давать одно окончательное значение, она последовательно применяет функцию, заданную вторым аргументом (в данном случае min), к каждому последующему элементу по порядку: min(11), min(11, 3), min(11, 3, 9) и так далее.

А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция combinations. Вторым аргументом можно задать длину этой самой комбинации.

#модули #itertools
Топ 5 асинхронных веб-фреймворков на Python

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

Тему асинхронности уже невозможно игнорировать, поэтому сегодня мы подготовили для вас крайне интересную статью, в которой рассказали про самые перспективные асинхронные веб-фреймворки в 2020 году.

Читать 6 минут

#статья
Что будет выведено на экран?

Выберите правильный ответ 👇

#question
Правильным ответом является [1, 2]

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

А для того, чтобы добиться правильного поведения функции, следует воспользоваться ключевым словом None при определении аргументов по-умолчанию.
Another yet itertools tricks

Всем привет! Не так давно мы рассматривали 3 трюка с модулем itertools. Сегодня мы рассмотрим еще несколько полезных фишек этого крутого модуля.

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

Для того, чтобы составить комбинацию с повторениями, используют функцию combinations_with_replacement. Делает она абсолютно все то же самое что и предыдущая, с одним исключением – теперь в комбинации могут быть повторы.

Ну и в заключение, рассмотрим функцию compress, применяющую "маску" из второго аргумента функции к первому. То есть, если в маске на этом месте стоит единица, то в исходном массиве цифра остается нетронутой, и наоборот.

#модули #itertools
Что будет выведено на экран?

Выберите правильный ответ 👇

#question
Ответ
Anonymous Quiz
15%
1
28%
3
29%
None
28%
Ошибка
Method Resolution Order

В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.

Этот порядок можно получить при помощи атрибута __mro__. Он говорит о том, что если мы в примере выше попробуем обратиться к атрибуту value, Python будет искать сначала в классе A, далее в B, затем в C и в самом конце в object.

Отсюда становится понятно, что артибут первее будет найден именно в классе B и равен он будет значению 1.
Вечный вопрос: Django или Flask

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

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

В случае, если в приоритете трудоустройство, то следует изучать Django, так как он наиболле востребованный. Но если вы хотите создавать пет-проекты или просто изучать веб в целом, то рекомендую рассматривать Flask.

#мнение
Pandas для начинающих

На сегодняшний день, пакет Pandas – самый важный инструмент во всем, что касается анализа данных. И если вы думаете о карьере в области Data Science, то крайне важно уметь работать с этим пакетом.

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

Читать 8 минут

#статья
А что предпочитаете вы?