№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy
Удаление префиксов и суффиксов
Методы .removeprefix() и .removesuffix() служат для удаления префикса или суффикса из строки соответственно. Эти методы были добавлены в Python 3.9.
Методы возвращают новую строку без указанного префикса или суффикса. Исходная строка не изменяется.
Если строка не начинается/заканчивается на указанный префикс/суффикс, возвращается копия исходной строки.
Методы вызывают исключение ValueError, если префикс/суффикс пустой.
#это_база
Ruff
Ruff - это линтер для проверки качества кода.
Он помогает обнаруживать ошибки, следовать стилистическим рекомендациям и в целом писать более чистый и читаемый код.
Ruff можно использовать для проверки как отдельных файлов, так и целых проектов.
Аннотация типов
Аннотации типов (type hints) позволяют указать ожидаемые типы аргументов функций и возвращаемых значений. Они были введены в Python 3.5.
Аннотации типов не проверяются во время выполнения кода. Это просто подсказки для разработчиков и инструментов статического анализа кода.
Поддерживаются встроенные типы (int, float, str, bool и т.д.), а также классы, списки, словари и кортежи с указанием типов внутри.
Для необязательных аргументов используется Optional[] (например, Optional[int]).
Для возвращения нескольких типов можно использовать Union (например, Union[int, str]).
#это_база
#вопросы_с_собеседований
Что такое сцепление исключений?
Сцепление исключений - это механизм, который позволяет сохранить исходную причину исключения при дополнительной обработке ошибки.
При возникновении исключения мы можем перехватить его блоком try/except и вызвать другое исключение из блока обработки.
При этом мы сохраняем исходное исключение как причину (cause) для нового.
Это дает следующие преимущества:
- При отлове нового исключения мы по-прежнему имеем доступ к стеку вызовов и данным исходного исключения.
- Можно добавлять дополнительную информацию в новое исключение, не теряя оригинальное.
- Иерархия исключений сохраняется - мы видим полную цепочку возникновения ошибки.
object
object - это встроенный класс, от него наследуются сразу все новые классы, если явно не указан другой базовый класс.
У объектов класса object есть методы init, str, repr и другие. Их можно переопределять в дочерних классах.
Атрибуты класса объявляются внутри класса, но вне всех методов. Атрибуты экземпляра объявляются в init.
Чтобы использовать класс object в своем коде, достаточно создать класс, унаследованный от object.
Protocol
Класс Protocol - это способ формального определения протоколов, введенный в версии 3.8.
Этот класс дает строгий и типизированный способ определения протоколов и позволяет формально описать интерфейс.
Сейчас используется в основном в стандартной библиотеке.
На изображении предоставлен пример использования Protocol для определения простого протокола логгирования.
LangChain
LangChain — это библиотека, которая позволяет создавать цепочки обработки естественного языка (NLP).
Основные возможности:
— Создание конвейеров обработки текста.
— Подключение различных модулей NLP (токенизация, лемматизация и т. д.).
— Объединение моделей в единую цепочку.
— Удобная настройка и отладка.
Используется для:
— Построения приложений для анализа текста на Python.
— Быстрого прототипирования решений для обработки естественного языка.
— Объединения разных библиотек NLP в одном workflow.
— Упрощения процесса экспериментов с моделями обработки текста.
В этом примере создается цепочка из двух моделей OpenAI — Curie и Babbage, а текст передается поочередно в каждую модель.
🎉 Большой розыгрыш от крупнейшего IT-медиа 1337, легендарного паблика Рифмы и Панчи, канала Техно.
Победителей будет много, а для участия нужны лишь пара кликов:
1. Подписаться на Рифмы и Панчи, 1337 и на Техно.
2. Нажать «Участвовать» под этим постом
Что по призам:
1 место - Iphone 16 Pro
2 место - PS5 Slim
3 место - Nintendo Switch 2
4-10 места - 10 000 рублей на карту
EEL
EEL (Easy Electron) — это библиотека, которая упрощает создание desktop-приложений с использованием технологий веб-разработки (HTML, CSS и Javascript).
Основные возможности EEL:
— Позволяет создавать графический интерфейс приложения при помощи веб-технологий.
— Обеспечивает взаимодействие между Python кодом и Javascript кодом. Python может вызывать JS функции, а JS может вызывать Python.
— Автоматически обрабатывает асинхронные вызовы между JS и Python.
— Встроенный локальный веб-сервер для отображения HTML/JS интерфейса.
В этом примере импортируется модуль eel и инициализируется папка с HTML и JS файлами — 'web'.
Декоратор @eel.expose делает функцию say_hello() доступной для вызова из Javascript.
Вызов eel.say_hello() вызывает эту функцию из Python кода.
Статические методы в Python
Статические методы - это методы, которые не требуют создания экземпляра класса для вызова.
Они не имеют доступа к атрибутам и другим методам экземпляра класса и объявляются с помощью декоратора @staticmethod
.
Статические методы часто используются для реализации функционала, не зависящего от состояния экземпляра класса и полезны при создании утилитарных классов и функций.
Как видно из примера, статические методы позволяют удобно организовывать функционал, связанный с обработкой строк, в класс StringUtils, не создавая отдельных объектов.
#это_база
#вопросы_с_собеседований
Что такое подгенератор (subgenerator)?
Подгенератор создается с помощью конструкции yield from внутри генератора.
Использование подгенераторов позволяет разбить генератор на несколько частей для упрощения кода и оптимизации памяти. Это полезный инструмент при работе с последовательностями.
Механизм передает значения между генераторами без сохранения всей последовательности в памяти и блокирует основной генератор до полного завершения подгенератора.
Нейронка VEO 3 от Google теперь в Telegram!
Нашумевшая нейросеть для создания видео теперь доступна без ограничений. Можно генерировать видео по запросу и даже оживлять фотографии.
Ссылка: @veo3
#вопросы_с_собеседований
Что такое коллизия?
Коллизия — это ситуация, когда при добавлении элементов в хеш-таблицу или словарь, разные ключи отображаются в одну и ту же ячейку памяти.
Это происходит потому, что количество возможных ключей обычно больше, чем размер выделенной хеш-таблицы, и хеш-функция отображает ключи в ограниченное количество ячеек.
При коллизии несколько разных ключей могут иметь одинаковый хеш, что приводит к их конфликту при размещении в хеш-таблице.
Чтобы решить проблему коллизий, в Python используются разные стратегии, например:
— Цепочки: списки элементов внутри ячейки таблицы.
— Открытая адресация: подбор следующей свободной ячейки.
— Перехеширование: генерация нового хеша при коллизии.
Уменьшение коллизий позволяет повысить производительность операций с хеш-таблицами и словарями.
ClickClick
— популярная библиотека для создания интерфейса командной строки (CLI) в приложениях Python.
Основные преимущества Click
— простота использования, элегантный и понятный код, мощные возможности по созданию комплексных CLI. Работает на Python 3.6 и выше.
Возможности:
— Определение команд и групп команд с помощью декоратора @click.command()
.
— Декларативное описание аргументов и опций.
— Автоматический парсинг аргументов командной строки.
— Генерация help
сообщения.
— Поддержка bash
/zsh
автодополнения.
— Вложенные команды и группы подкоманд.
— Цветной вывод в терминал.Click
широко используется для создания консольных утилит, CLI интерфейсов для web фреймворков, DevOps инструментов, скриптов автоматизации и других задач, где требуется командная строка.
Функция zip()
Функция zip()
принимает в качестве аргументов последовательности (списки, кортежи и т.д.) и возвращает итератор с кортежами из элементов этих последовательностей.
Итератор возвращает кортежи, содержащие i-й элемент из каждой из последовательностей. Количество элементов в итоговом итераторе равно длине самой короткой последовательности.zip
можно использовать для "сшивания" вместе данных из нескольких списков. Например, имена и фамилии из двух списков можно комбинировать в один список имя-фамилия.
Результатом zip
является итератор, который можно превратить в список или кортеж. Также на результат можно применять различные операции, такие как цикл for
.zip
используется вместе с распаковкой кортежей, чтобы присвоить элементы нескольких итераторов переменным в цикле.
#это_база
#вопросы_с_собеседований
Как происходит проверка множеств на равенство?
- Для равенства множества должны содержать одинаковые элементы.
- Порядок элементов значения не имеет.
- Количество вхождений элемента также не важно.
- Если элементы в множествах разные - множества не равны.
- Другие атрибуты или свойства множеств, кроме состава элементов, не проверяются.
Таким образом, множества равны, когда они имеют одинаковые элементы, вне зависимости от порядка или количества вхождений.
Как прокачаться до Python Middle+/Senior разработчика и получить новую работу в 2025?
Ребята из Interview Hustlers в четверг проводят воркшоп о том, как junior и middle-разработчикам быстрее вырасти до уровня крепкого Senior, овладеть hard skills, востребованными в продуктовых компаниях и BigTech, и получить новую работу на сложном рынке в 2025 году, где AI уже наступает на пятки.
🗓 24 июля 19:00 по МСК
Программа:
▪️ Какие hard skills качать, чтобы устроиться на Middle+/Senior разработчика в BigTech?
▪️ Как эффективно собеседоваться на тяжелом рынке летом 2025? Как выбивать максимальные офферы в РФ и заграницей?
▪️ Как вырасти технически на текущем месте работы и получить повышение в компании?
Спикеры:
▪️Максим Аверин — Senior Python Dev, основатель школы Interview Hustlers, 8 лет опыта
▪️Сергей Соловьев — Python Tech Lead в Кипрском финтехе, 10+ лет опыта
Регистрируйся на бесплатный воркшоп по ссылке.
📎 После регистрации на воркшоп ты получишь 2 бонуса: «Как разобрать неудачное собеседование без фидбека за 3 шага с AI?» и видео-урок «System Design интервью: Как спроектировать highload-маркетплейс с 0?»
Реклама. ИП Аверин Максим Игоревич. ИНН 781437134649.
Memray
Memray - это библиотека для профилирования памяти и она является важным инструментом оптимизации производительности Python программ.
Библиотека отслеживает выделение и освобождение памяти при работе программы, поддерживает отслеживание ссылок на объект, применятся для профилирования на серверах и в виртуальных окружениях.
В примере мы используем декоратор memray.profile, который будет отслеживать все выделение и освобождение памяти внутри функции my_func().
При запуске этого кода memray выведет отчёт.
🧑🏻💻Хотите стать Python-разработчиком и научиться работать с современными инструментами, которые используют ведущие компании? Docker — это ваш ключ к успеху!
Присоединяйтесь к открытому уроку «Docker и его возможности для Python-разработчика» от OTUS! Мы расскажем:
- Что такое Docker и как он помогает ускорить разработку.
- Чем контейнеры отличаются от виртуальных машин.
- Как создавать и управлять Docker-образами для Python.
- Базовые практики безопасности и оптимизации работы с Docker.
Понимание Docker — это не просто тренд, а обязательное знание для разработчиков, стремящихся работать с актуальными технологиями и эффективно разворачивать приложения. Освоив Docker, вы значительно упростите свою работу с проектами, избавитесь от проблем с окружением и ускорите деплой.
⚡️Присоединяйтесь к уроку и получите скидку на большое обучение «Python Developer. Basic». Регистрация открыта: https://otus.pw/y8Qs/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⁉️ Хотите узнать, как устроен рабочий процесс в ML и получить базовые навыки работы с данными?
23 июля в 20:00 МСК OTUS проводит открытый урок «ML для начинающих – первые шаги с Jupyter Notebook». Вас ждёт:
– Обзор этапов машинного обучения: от подготовки данных до первой модели.
– Настройка виртуального окружения для изоляции экспериментов.
– Знакомство с Jupyter Notebook: анализ, визуализация, код и Markdown вместе.
Этот урок — идеальная отправная точка перед стартом курса «Специализация Machine Learning». Все участники получат скидку на обучение.
➡️ Регистрация открыта: https://otus.pw/w8hX/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
#вопросы_с_собеседований
В чем смысл параметров _value, __value?
_value - одиночное подчеркивание в начале имени означает, что этот параметр не предназначен для использования outside функции. Это соглашение, а не ограничение языка.
__value - двойное подчеркивание означает, что это имя зарезервировано Python и используется для специальных целей, например init для конструктора класса. Такие параметры могут выполнять какие-то дополнительные действия.
#вопросы_с_собеседований
Как работает хэш-таблица?
Принцип работы:
— Элементы хэш-таблицы хранятся в виде пар ключ-значение.
— Каждому ключу сопоставляется уникальный целочисленный индекс с помощью хэш-функции.
— Этот индекс используется для прямого доступа к ячейке таблицы, в которой и хранится значение.
— Если по одному индексу хэш-функции попадает несколько ключей, используется механизм разрешения коллизий (цепочки, открытая адресация).
— Хэш-таблица динамически изменяет свой размер, чтобы оптимизировать память и время доступа.
Breakpoint
Breakpoint - это точка останова в коде, которая используется для отладки при помощи интерактивного отладчика.
breakpoint ставится в строке кода, где нужен останов для проверки значений. При достижении breakpoint программа приостанавливается, после чего можно изучить ее состояние.
При выполнении код остановится на строке с breakpoint(), позволяя изучить текущие x и y.
#это_база
manim
Manim — это библиотека, которая используется для создания анимированных визуализаций и математических демонстраций.
Manim позволяет программистам и математикам создавать наглядные анимации для визуализации различных процессов, объяснения алгоритмов, демонстрации физических явлений и других задач.
Результат выполнения кода из примера — видеофайл с анимацией данных преобразований.
🧑🏻💻16 июля в 18:00 МСК OTUS проводит открытый вебинар: «Random Forest — мощный метод ансамблирования в ML».
Вы узнаете, как работает один из самых надёжных и понятных алгоритмов машинного обучения — Random Forest. Поговорим о принципах его работы, вариантах применения, особенностях настройки и, конечно, попрактикуемся на Python прямо на занятии.
Это отличный шанс для тех, кто:
— делает первые шаги в Data Science;
— хочет разобраться в ключевых алгоритмах ML;
— рассматривает переход в IT;
— выбирает курс и направление для старта карьеры.
➡️ Вебинар проходит в преддверии старта курса «Специализация Machine Learning». Все участники получат скидку на обучение. Регистрация открыта: https://otus.pw/lVUq/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
#вопросы_с_собеседований
В каких случаях можно обработать SyntaxError?
SyntaxError — это исключение, которое генерируется интерпретатором при обнаружении ошибки в синтаксисе кода.
Обработать это исключение можно в следующих случаях:
— При разборе и выполнении кода, сгенерированного пользователем в приложении (например, в песочнице).
— При динамическом изменении и выполнении кода с помощью eval() или exec().
— В REPL оболочках для обработки ошибок в интерактивном режиме.
— В инструментах для проверки и валидации кода на корректность синтаксиса.
— В интерпретаторах и компиляторах для информирования пользователя об ошибке.
— В системах автодополнения кода для обработки некорректного синтаксиса.
— В средствах отладки и трассировки для выявления ошибок в выполняемом коде.
Точка входа в программу
Конструкция if __name__ == '__main__' используется для того, чтобы определить, запущен ли файл модуля напрямую или импортирован из другого модуля.
Эта конструкция позволяет запустить какой-то код только при прямом вызове модуля, так как name будет равно 'main' только если модуль запущен напрямую.
Это позволяет запускать программу полностью только когда она основная, а не импортируется в качестве модуля.
#это_база
Библиотека TyperTyper
— это библиотека для создания командных интерфейсов приложений на Python.
Она позволяет легко создавать CLI приложения с поддержкой аргументов, опций, субкоманд и автоматической генерацией help
.
Основные возможности Typer
:
— Декоратор @typer.command()
для определения команд и подкоманд.
— Автоматический парсинг аргументов и опций.
— Валидация и tipped annotations для аргументов и опций.
— Автоматическая генерация help
с описаниями.
— Встроенная поддержка Click
для обратной совместимости.
Typer часто используется для создания утилит командной строки, CLI интерфейсов для python приложений, API клиентов, DevOps инструментов и других задач, где нужен простой и удобный интерфейс командной строки.
Функция sortedsorted()
используется для сортировки элементов в списке, кортеже или другой последовательности.
Она возвращает новый отсортированный список или итератор, не изменяя исходную последовательность.
По умолчанию сортировка выполняется в возрастающем порядке. Для сортировки в убывающем порядке нужно указать аргумент reverse=True
.
Для сортировки по определенному ключу можно использовать ключевой аргумент key
. Он принимает функцию, которая извлекает ключ для сортировки из каждого элемента.
Для сортировки объектов можно использовать атрибуты объекта в качестве ключа сортировки.
Сортировка происходит на месте для списков, и создаётся новый отсортированный список для кортежей и других неизменяемых последовательностей.
#это_база
#вопросы_с_собеседований
Что такое модульное программирование?
Модульное программирование — это подход к структурированию программного кода, при котором функциональность разбивается на отдельные модули.
Основные преимущества модульного программирования:
— Повышение читаемости и понятности кода, так как каждый модуль отвечает за определенную функциональность.
— Возможность многократного использования модулей в разных частях программы.
— Упрощение тестирования и отладки, поскольку каждый модуль можно тестировать отдельно.
— Возможность распараллеливания разработки за счет разделения труда в команде.
— Упрощение поддержки и модернизации кода за счет его модульности.