Python академия
7.24K subscribers
2.57K photos
5 videos
410 links
Учи Python быстро и легко.

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

Подходит для прокачки навыков кодирования.

По всем вопросам @evgenycarter
Download Telegram
Ограничьте использование процессора и памяти

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

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
3 трюка с itertools

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

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

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

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1🔥1
Разработка ИИ-приложений с Claude Code. Бесплатный урок курса «Вайб-кодинг: создание цифровых продуктов с ИИ»

Claude Code помогает быстрее писать, анализировать и дорабатывать код. Но ценность такого инструмента раскрывается не тогда, когда вы просите «сделай приложение», а когда умеете дробить задачу, задавать контекст, контролировать архитектуру и вести разработку пошагово. Иначе вместо ускорения получится набор кусков кода, которые трудно проверить и связать в рабочий продукт.

На открытом уроке 21 июля в 20:00 разберём, как использовать Claude Code для практической разработки ИИ-продуктов и сервисов. Посмотрим, как с его помощью создавать Telegram-ботов, ИИ-агентов и внутренние сервисы, генерировать серверную логику, программные интерфейсы, интеграции и автоматизации через текстовые запросы.
Отдельно обсудим подходы к работе с большими проектами: структуру промптов, контекст, пошаговую разработку и проверку результата.

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

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

👉 Записаться: https://vk.cc/cZzmqV

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Правильным ответом является [1, 2]

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

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

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1🤔1
Частичное применение

Сегодня поговорим об одном интересном концепте из области функционального программирования. Использовать будем функцию partial из стандартной библиотеки functools.

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

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

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Именование среза с использованием функции slice

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

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

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍2🔥1
Switch-конструкция с помощью словаря

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

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

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

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍3
Генерация уникальных идентификаторов

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

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

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

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

Вполне недурно для двух строк кода.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1👎1
⁠Кэширование функций

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

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

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍2
Ускоряем код с помощью векторизации

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

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

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

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1