python_academy | Unsorted

Telegram-канал python_academy - Python Academy

51359

Python Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu

Subscribe to a channel

Python Academy

Функция itertools.cycle

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

Сегодня мы бы хотели показать вам функцию cycle() из itertools. Данная функция принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта. Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элементы.

К примеру, функция cycle() из последовательности ['red', 'white', 'blue'] генерирует повторяющуюся бесконечную. Но важно при проходе при итерации по такому итератору предусмотреть выход из цикла (а не как у нас в первом случае с colors:). Так как это итератор, то мы можем использовать его для получения значений через функцию next(colors).

Мы также можем воспользоваться islice(), который вернет итератор по подмножеству переданного объекта.

#генераторы #itertools

Читать полностью…

Python Academy

Корутины

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

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

Функция работает так: при отправке значения через метод send локальная переменная name принимает его, а далее значение подставляется в строку и выводится на экран.

#генераторы #корутины

Читать полностью…

Python Academy

Яндекс 360 запустил техножурнал

В Яндекс 360 мы создаём технологии, которые лежат в основе более чем 12 сервисов, включая Диск, Телемост, Почту, Мессенджер и другие. И мы любим о них рассказывать. Как устроены видеозвонки на тысячу человек? Как хранятся и обрабатываются петабайты данных? Какие вызовы мы решаем, создавая сервисы, которыми пользуются миллионы?

Теперь ответы на эти вопросы, все технические статьи, разборы сложных задач, доклады и выступления инженеров Яндекс 360 — в нашем журнале.

Читать полностью…

Python Academy

Распознаем речь используя SpeechRecognition

SpeechRecognition — это библиотека на Python, которая предоставляет возможность использовать API для распознавания речи от различных компаний, таких как Google, Microsoft, IBM и другие. Кроме того, она поддерживает работу в офлайн-режиме.

Эта библиотека упрощает процесс интеграции голосовых команд и обработки аудиоданных в ваших проектах. Благодаря широкому спектру возможностей, SpeechRecognition подходит для создания приложений с голосовым управлением, интеллектуальных ассистентов и многого другого.

#python #speechrecognition

Читать полностью…

Python Academy

Вам приглашение на митап в честь Дня рождения Python!

В четверг, 20 февраля, в 18:00 ждем вас в московском офисе Сбера на Python Birthday Meetup.

О чем поговорим:

🟢Лень как искусство, или зачем программисту LLM?
Никита Замулдинов из Сбера расскажет, как превратить искусственный интеллект в своего личного ассистента, делегировать скучные задачи и расширить собственные возможности. Вас ждут реальные кейсы и демонстрация AI-агентов в действии.

🟢Люблю и ненавижу Asyncio
Николай Хитров из Точки разберет новые и старые «грабли» Asyncio и расскажет о best practices его использования.

🟢От хаоса к порядку: Pydantic в борьбе с инцидентами безопасности
Александр Глазков из Сбера расскажет, как и почему Pydantic изменил жизнь команды, а также поделится тонкостями его использования.

А также в программе:
Нетворкинг, фуршет и подарки.

📍 Офлайн + онлайн
Регистрация на мероприятие и подробности

Читать полностью…

Python Academy

Упрощенная работа с JSON

Казалось бы, куда еще проще, но есть один интересный пакет JMESpath, который позволяет декларативно указать, как извлекать элементы из документа JSON.

Основные примеры использования показаны на картинке, там нет ничего сложного. Метод search принимает паттерн, по которому требуется извлечь данные, а также словарь (который в общем-то похож на JSON).

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

#json #jmespath

Читать полностью…

Python Academy

PyOxidizer

PyOxidizer — это инструмент, позволяющий упаковать Python-проект в единый исполняемый файл, включающий интерпретатор Python, все необходимые библиотеки и ресурсы. Это позволяет запускать ваши приложения без необходимости предварительной установки Python или каких-либо зависимостей.

#python

Читать полностью…

Python Academy

Использование внешних процессов в Python с помощью subprocess

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

Что такое subprocess?

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

Пример использования subprocess:

import subprocess

# Простой пример: выполнение команды "ls" в командной строке
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE, text=True)

# Вывод результата выполнения команды
print(result.stdout)

В данном примере мы использовали subprocess.run для выполнения команды "ls -l". Параметр stdout=subprocess.PIPE указывает на перенаправление вывода команды в переменную result.stdout. Параметр text=True гарантирует, что вывод будет в текстовом формате.

Передача данных и получение результата:

import subprocess

# Передача данных в команду и получение результата
input_data = "Hello, subprocess!"
result = subprocess.run(['echo', input_data], stdout=subprocess.PIPE, text=True)

# Вывод результата выполнения команды
print(result.stdout)

В данном примере мы использовали команду echo для вывода переданных данных. subprocess.run позволяет передавать данные в команду через параметр input.

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

#python #subprocess

Читать полностью…

Python Academy

Классы данных

Еще в Python 3.7 добавили такую мощную штуку, как классы данных. Они призваны автоматизировать генерацию кода классов, которые используются для хранения данных.

Встроенный модуль dataclasses содержит декоратор @dataclass. С его использованием код будет выглядеть лаконично и коротко. Пример на картинке выше.

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

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

#dataclass

Читать полностью…

Python Academy

Отлавливаем баги с assert

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

Но если попробовать выполнить инструкцию assert с логическим выражением, которое равно False, то будет сгенерировано исключение AssertionError.
 
Исключения AssertionError предназначены скорее для отладки. При написании программ на этапе разработки мы можем видеть, что делаем что-то не так (например, передали в метод некорректное значение). 

Также не нужно, к примеру, обрабатывать пользовательский ввод и пытаться обработать исключение AssertionError блоком try-except.

Если в вашем коде будет очень много assert'ов, то это затронет и производительность программы.

#исключения #assert

Читать полностью…

Python Academy

FastAPI

FastAPI – фреймворк, про который однозначно стоит рассказать. Честно, синтаксис мне кажется намного приятнее, чем у других фреймворков.

Интересно, что автор фреймворка глубоко изучил несколько других фреймворков, от классических, таких как Django, до более современных, таких как Sanic, а также изучил различные технологии в NestJS (веб-фреймворк Node.js, Typescript).

Фреймворк имеет важную особенность – автоматическая генерация документации: как только ваши конечные точки будут реализованы, вы сможете поиграться с API, используя соответствующий стандартам пользовательский интерфейс. Поддерживаются SwaggerUI, ReDoc и другие.

FastAPI построен на удивительной библиотеке Starlette, в результате чего производительность сравнима с Node.js, а в некоторых случаях даже Go! В целом, складывается стойкое предчувствие, что FastAPI будет мчаться вперёд как лучший асинхронный фреймворк для Python.

#фреймворки #web

Читать полностью…

Python Academy

Генерация QR кодов

Сегодня покажем создание QR кодов. Для этого нам понадобится модуль qrcode, который используется для создания изображений с QR кодом.

Все максимально просто, за нас по сути все делает уже написанный модуль.

Выше на картинке мы сделали простую функцию generate, которая принимает какую-то информацию и название файла, в который нужно сохранить результат в виде QR кода.

За создание картинки отвечает метод qrcode.make, который возвращает нам изображение в формате PIL.Image, а после этого мы его сохраняем в нужном нам файле.

Получившийся QR код можете посмотреть тут.

#qrcode #pillow

Читать полностью…

Python Academy

FastAPI

FastAPI – фреймворк, про который однозначно стоит рассказать. Честно, синтаксис мне кажется намного приятнее, чем у других фреймворков.

Интересно, что автор фреймворка глубоко изучил несколько других фреймворков, от классических, таких как Django, до более современных, таких как Sanic, а также изучил различные технологии в NestJS (веб-фреймворк Node.js, Typescript).

Фреймворк имеет важную особенность – автоматическая генерация документации: как только ваши конечные точки будут реализованы, вы сможете поиграться с API, используя соответствующий стандартам пользовательский интерфейс. Поддерживаются SwaggerUI, ReDoc и другие.

FastAPI построен на удивительной библиотеке Starlette, в результате чего производительность сравнима с Node.js, а в некоторых случаях даже Go! В целом, складывается стойкое предчувствие, что FastAPI будет мчаться вперёд как лучший асинхронный фреймворк для Python.

#фреймворки #web

Читать полностью…

Python Academy

Фармишь дропы вручную? Не совершай ошибку!

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

Освой кодинг и навсегда забудь о надоедливой рутине. На канале AIO Study всему научат на пальцах. Топовые разработчики из команды hodlmod.eth научат:

— Сокращать время на рабочие процессы до пары кликов
— Защищаться от скама
— Масштабировать «ферму»

Доверять незнакомым кодерам — идти на high-risk. Лучше выучиться самому, это несложно.

Подпишись и выбери технологии.

Читать полностью…

Python Academy

Создание процессов

Класс Process из встроенного модуля multiprocessing позволяет создавать процессы без прямого вызова функции fork, про которую писали раньше на канале.

При создании экземпляра Proccess необходимо передать функцию, которую требуется исполнить в отдельном дочернем процессе и аргументы этой функции. Процесс будет создан после вызова метода start. Внутри метода start будет вызван fork и будет исполнена функция в отдельном процессе.

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

#процессы #multiprocessing

Читать полностью…

Python Academy

Оператор объединения словарей

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

Но в одном из последних обновлений добавили специальный оператор |, с помощью которого можно это делать ещё проще. 

#словари

Читать полностью…

Python Academy

Выделение базовой части слов

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

Таким образом, было бы полезно при анализе текста извлекать базовые формы слов. Можно сказать, что для процесса выделения базовой части слова необходимо обрезать концы слов.

В модуле Python NLTK (Natural Language Toolkit Package) есть различные пакет, связанные с данным процессом выделения базовой части и использующие разные алгоритмы.

Один за пакетов, snowball, использует алгоритм соответственно Snowball, разработанный Мартином Портером. Алгоритм поддерживает большинство популярных языков. Подробнее об алгоритме можно почитать тут.

#snowball

Читать полностью…

Python Academy

Разделители для целых чисел

Трудно визуально различить целые числа подобные 10000000 и 100000000. Использовать запятые, как в английском языке, не получится.

Но Python позволяет использовать нижнее подчеркивание как разделитель для улучшения читабельности.

Например, 1_000_000 будет интерпретироваться как целое число 1000000.

#числа

Читать полностью…

Python Academy

Код в одну строку через бота

Ещё один интересный проект от нашего подписчика — телеграм бот @onelinepython_bot, который превращает код на Python в одну строку. Проект написан на C#, но тем не менее стоит внимания.

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

Присылайте свои проекты в личные сообщения @a1f20. Про самое интересное расскажем на канале. 

#проектподписчика

Читать полностью…

Python Academy

Улучшенные отчеты об ошибках

В последнем обновлении Python 3.10 добавили более удобную и точную информацию об ошибках. Теперь выводится и природа ошибки, и ее местоположение в коде.

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

#updates

Читать полностью…

Python Academy

Слабые ссылки

Weakref позволяет создавать слабые ссылки к объектам, но не поддерживают объект живым, если не осталось больше сильных ссылок.

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

#weakref

Читать полностью…

Python Academy

Highload буткэмп: Системный дизайн, Производительность и Масштабирование

🌐 Приглашаем на курсы для прокачки навыков архитектора и проектировщика на весеннем Highload-потоке от Devhands, в рамках которого вы:

🤩 Изучите ключевые хайлоад-паттерны и освоите проектирование систем с миллионной аудиторией: балансировка, масштабирование, шардинг, высокая доступность, CAP/PACELC, транзакционные очереди и многое другое.
🤩 Поупражняетесь в системном дизайне на реальных кейсах: маркетплейсы, соцсети, доставка, объявления и другие задачи, с получением обратной связи.
🤩 Погрузитесь в highload, работая с предоставленной вам инфраструктурой: “выжимайте” 100K RPS и изучите кластерные решения — Redis, SPQR, CockroachDB.
🤩 Научитесь планировать нагрузку и связывать бизнес-показатели с требованиями системы.
🤩 Попрактикуетесь в проведении и прохождении секций системного дизайна на интервью.

Только “живые” онлайн-сессии: лекции, брейнштормы, презентации домашних проектов.

🗓 Старт потока 24 февраля, изучайте программу и записывайтесь:

🤩 Буткэмп “Производительность и масштабируемость” для тех, кто хочет поработать с собственной инфрой.

🤩 Курс “Системный дизайн высоконагруженных проектов” для тех, кто хочет только практику проектирования “у доски”.

🥸 Кто мы: R&D-центр Devhands, основатель и автор курса Алексей Рыбак, ex-СТО Badoo и Yum! Brands, член программного комитета Highload.

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqwGy5SV

Читать полностью…

Python Academy

Как работают арифметические операции

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

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

Еще стоит отметить, что у float поддерживается деление с остатком, то есть метод __div__. А int имеет только деление с округлением, реализованное в методе __floordiv__.

#magic

Читать полностью…

Python Academy

Итерируемый счетчик

Еще один классный итератор из itertools — это count, который генерирует бесконечную последовательность чисел.

В аргументах можно задать значения start и step: первый отвечает за начальное значение, а второе за шаг, как и в range.

Обычно count редко используют с циклом for. Чаще можно встретить случаи с функциями типа zip или map.

#itertools

Читать полностью…

Python Academy

Получаем и задаем лимит рекурсии

В Python не оптимизируется хвостовая рекурсия, из-за чего зачастую возникает RecursionError во время создания рекурсивных алгоритмов.

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

И вообще лучше стараться использовать не рекурсию, а обычные циклы, но это вы и так сами знаете.

#рекурсия #лимиты

Читать полностью…

Python Academy

Универсальный парсер статей

Пакет newspaper3k позволяет парсить статьи и извлекать из них заголовки, текст, дату публикации, имена авторов и много другой информации.

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

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

#парсер #newspaper3k

Читать полностью…

Python Academy

Старт карьеры продуктового аналитика в Авито 😎
 
Оплачиваемая стажировка для продуктовых аналитиков в Авито — начните карьеру в компании с многомиллионной аудиторией.
 
Каждый день вы будете работать над реальными задачами, с которыми сталкиваются сотрудники Авито. Найти лучшее решение и разобраться в инструментах и технологиях поможет опытный персональный наставник. А комьюнити стажёров поддержит и поделится опытом.
 
Условия стажировки:
• длительность — 6 месяцев,
• работа от 25 часов в неделю, после стажировки — 40 часов в неделю,
• зарплата и корпоративные преимущества,
• работа удалённо, в гибридном формате или офисе.
 
80% стажёров продолжают работать в Авито. Регистрируйтесь, проходите отбор и присоединяйтесь к ним.

Читать полностью…

Python Academy

ООП: композиция

Композиция — это отношение, при котором объекты одного класса связаны с объектами другого. Такой способ организации взаимодействия между классами также называется ассоциацией.

Как правило, в этом случае объект одного из классов (в примере выше это Salary) является полем другого (Employee). Сложного здесь, как вы видите, ничего нет.

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

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

#классы #ооп

Читать полностью…

Python Academy

Бесконечность

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

Строковые литералы 'inf' и 'infinity' можно конвертировать в float, и в результате получается значение бесконечности. Для отрицательной "бесконечности" нужно поставить знак минуса перед словом.

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

#float

Читать полностью…

Python Academy

Превращаем PDF в текст

Думаю, все периодические работают с PDF-документами. И зачастую это ручная и скучная работа. Но Python может автоматизировать даже такую рутинную задачу.

Модуль pdftotext создан именно для работы с документами в PDF формате. Устанавливается он через пакетный менеджер pip, а использовать его проще простого. Все основные операции представлены на картинке выше.

Кстати, здесь ещё интересно то, что исходный код модуля написан на C++. Поэтому есть небольшая вероятность, что придётся повоевать с зависимостями.

#pdftotext

Читать полностью…
Subscribe to a channel