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

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

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

Канал включён в перечень РКН: https://rkn.link/TVu
加入频道
7 практических трюков в Python

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

Читать 8 минут
​​​​Создай своего первого чат-бота уже в эту пятницу

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

На интенсиве мы с вами разберем основные моменты, связанные с Telegram-ботами, а также создадим свою версию @DailyAnimalsBot с абсолютного нуля! 

Всё пройдет в нашем закрытом канале 17 января в 20:00.
​​Авторский курс по разработке Telegram-ботов

Мы рады представить вам наш курс по ботам. Он будет сосредоточен на библиотеке pyTelegramBotAPI.

Курс стартует 27 января и включает 3 пакета: серебряный (1290 ₽), золотой (1890 ₽) и платиновый (4190 ₽).

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

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

Интенсив будет полностью бесплатным и на 100% полезным. Мы поделимся нашим опытом и знаниями.

📝 Записаться на курс можно через бота @python_academy_robot или у Адриана и Святослава
Крестики-нолики на Python за 15 минут

Для того, чтобы скоротать время ожидания до начала нашего курса (@python_academy_course), мы для вас приготовили достаточно интересную статью, в которой создали небольшую игру с помощью Python и модуля Kivy. Приятного прочтения :)

Читать 15 минут
​​Switch-конструкция с помощью словаря

Привет, на связи Адриан. Начинающие программисты достаточно часто спрашивают меня про switch-конструкции, а в Python их вобщем-то нет.

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

В этом примере я использовал lambda-функции для упрощения кода, но вместо них можете подставить любые другие. Объясню немного подробнее, lambda – объявление анонимной функции, x и y - принимаемые аргументы, x + y – возвращаемый результат.

Думаю, такой подход удобнее башни из условных конструкций.
​​Генерация уникальных идентификаторов

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

Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier), глобально уникальный идентификатор.

Так, мы можем создать случайное 128-битное число, которое наверняка будет уникальным. Существует более 2¹²² возможных UUID. Это более 5 ундециллионов, то есть 36 нулей.

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

Вполне недурно для двух строк кода.
Буквально на днях я написал один прикольный скрипт, который автоматически ставит текущее время на аватарку в телеграме, а также показывает прогресс дня в процентах в описании профиля. Посмотреть всё это можете в моём профиле – @a1f20.

Если хотите сделать что-то похожее, то напишите мне в личные сообщения, можно просто символ "+". Будет много желающих – сделаю статью или даже видео, в котором всё покажу и объясню.
Упаковка параметров с помощью urlencode

Новая неделя – новые знания. В это утро понедельника я подготовил для вас крайне практичный пост.

Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:

url = 'https://example.com?item={}&size={}&color={}&amount={}'.format('t-shirt', 'M', 'white', 5)

Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция urlencode из из модуля urllib.
Перечисления (Enum)

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

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

Из документации по Python 3 можно узнать о том, что перечисление — это набор символических имён, привязанных к уникальным, неизменным значениям. Члены одного перечисления можно сравнивать на идентичность. А также перечисления можно обходить с помощью циклов.
99% точность в классификации цифр на Keras

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

Читать 12 минут
Кэширование функций

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

Кэширование может сэкономить время, когда связанная с вводом или выводом функция периодически вызывается с одинаковыми аргументами. Раньше приходилось создавать свою реализацию, но в Python 3.2+ появился декоратор lru_cache, который позволяет нам быстро кэшировать и вскрывать возвращаемые значения функции.

Давайте реализуем калькулятор чисел Фибоначчи с использованием кэша. Советую попробовать запустить любую рекурсивную функцию с кэшированием и без него, прирост в скорости замечается сразу.
Автоматический счетчик во время итераций по коллекциям

Привет. Достаточно часто я наблюдаю ситуации, в которых новички создают "костыли", когда им необходим счетчик во время обхода коллекции. И вот решение проблемы.

Итак, встроенная в Python функция enumerate применяется для итерируемых коллекций (строки, списки, словари и другие) и создает объект, который генерирует кортежи, состоящие из двух элементов – индекса элемента и самого элемента.

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

Привет, с вами Адриан. Многие уже видели, что моя аватарка в Telegram автоматически изменялась на текущее время. И мне написало огромное количество желающих повторить то же самое. Вы просили – я сделал. Приятного прочтения :)

Читать 10 минут
Логические any и all

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

Функция any возвращает значение True, если хотя бы одно из переданных утверждений верно, all – в случае, если все верны.

На мой взгляд, эти две функции заслуживают отдельного внимания всего лишь из-за их простоты в использовании.
Блок else в циклах for

Хауди хо, друзья. Практически все новички теряются при виде блока else после циклов, поэтому сейчас немного проясним ситуацию.

В Python блок else может быть представлен не только в условных конструкциях после if, но и в циклах после for и while. В данном случае код внутри else выполняется, только если цикл не был прерван с помощью break.

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

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

Читать 7 минут
Сохраняем данные с помощью 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-строки – свежий и наиболее производительный способ форматирования строк.