№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy
Fugue
Fugue — это библиотека, которая используется для создания и оркестровки workflow машинного обучения.
Она позволяет быстро создавать, тестировать и масштабировать ML приложения, автоматизируя рутинные этапы.
Основные возможности:
— Описание этапов workflow как отдельных функций.
— Автоматическое определение зависимостей между функциями.
— Планирование выполнения функций с учетом зависимостей.
— Кэширование промежуточных результатов для оптимизации.
— Распределенное выполнение на разных ядрах или машинах.
В этом примере с помощью декоратора @FugueWorkflow()
отмечены функции, которые будут этапами workflow.
Fugue автоматически определит, что fit_model зависит от preprocess, а predict - от fit_model.
При вызове функций Fugue учтёт эти зависимости и выполнит их в правильном порядке, кэшируя промежуточные результаты.
Каждый разработчик ежедневно сталкивается с новыми челенджами, один из них — отказоустойчивость системы.
Поработаем над темой вместе?
Команда Яндекс Такси и ведущие специалисты IT отрасли делятся своим опытом. Регистрируйтесь сейчас и используйте в работе лучшие практики.
2 сентября. «Москва-Сити», башня «Око», с онлайн-трансляцией. Бесплатно
Подробнее
Статические методы в Python
Статические методы - это методы, которые не требуют создания экземпляра класса для вызова.
Они не имеют доступа к атрибутам и другим методам экземпляра класса и объявляются с помощью декоратора @staticmethod
.
Статические методы часто используются для реализации функционала, не зависящего от состояния экземпляра класса и полезны при создании утилитарных классов и функций.
Как видно из примера, статические методы позволяют удобно организовывать функционал, связанный с обработкой строк, в класс StringUtils, не создавая отдельных объектов.
#это_база
manim
Manim — это библиотека, которая используется для создания анимированных визуализаций и математических демонстраций.
Manim позволяет программистам и математикам создавать наглядные анимации для визуализации различных процессов, объяснения алгоритмов, демонстрации физических явлений и других задач.
Результат выполнения кода из примера — видеофайл с анимацией данных преобразований.
Breakpoint
Breakpoint - это точка останова в коде, которая используется для отладки при помощи интерактивного отладчика.
breakpoint ставится в строке кода, где нужен останов для проверки значений. При достижении breakpoint программа приостанавливается, после чего можно изучить ее состояние.
При выполнении код остановится на строке с breakpoint(), позволяя изучить текущие x и y.
#это_база
#вопросы_с_собеседований
В чем смысл параметров _value, __value?
_value - одиночное подчеркивание в начале имени означает, что этот параметр не предназначен для использования outside функции. Это соглашение, а не ограничение языка.
__value - двойное подчеркивание означает, что это имя зарезервировано Python и используется для специальных целей, например init для конструктора класса. Такие параметры могут выполнять какие-то дополнительные действия.
Protocol
Класс Protocol - это способ формального определения протоколов, введенный в версии 3.8.
Этот класс дает строгий и типизированный способ определения протоколов и позволяет формально описать интерфейс.
Сейчас используется в основном в стандартной библиотеке.
На изображении предоставлен пример использования Protocol для определения простого протокола логгирования.
#вопросы_с_собеседований
Что такое сцепление исключений?
Сцепление исключений - это механизм, который позволяет сохранить исходную причину исключения при дополнительной обработке ошибки.
При возникновении исключения мы можем перехватить его блоком try/except и вызвать другое исключение из блока обработки.
При этом мы сохраняем исходное исключение как причину (cause) для нового.
Это дает следующие преимущества:
- При отлове нового исключения мы по-прежнему имеем доступ к стеку вызовов и данным исходного исключения.
- Можно добавлять дополнительную информацию в новое исключение, не теряя оригинальное.
- Иерархия исключений сохраняется - мы видим полную цепочку возникновения ошибки.
Аннотация типов
Аннотации типов (type hints) позволяют указать ожидаемые типы аргументов функций и возвращаемых значений. Они были введены в Python 3.5.
Аннотации типов не проверяются во время выполнения кода. Это просто подсказки для разработчиков и инструментов статического анализа кода.
Поддерживаются встроенные типы (int, float, str, bool и т.д.), а также классы, списки, словари и кортежи с указанием типов внутри.
Для необязательных аргументов используется Optional[] (например, Optional[int]).
Для возвращения нескольких типов можно использовать Union (например, Union[int, str]).
#это_база
Ruff
Ruff - это линтер для проверки качества кода.
Он помогает обнаруживать ошибки, следовать стилистическим рекомендациям и в целом писать более чистый и читаемый код.
Ruff можно использовать для проверки как отдельных файлов, так и целых проектов.
"70-е года прошлого века подарили обществу множество потрясающих вещей: "американскую новую волну", панк- и прогрессивный рок, появление мыши, шоу "Летающий цирк Монти Пайтона""...
Которое вдохновило Гвидо ван Россума, голландского программиста, на создание нового ЯП, который он назвал в честь шоу.
Академия Кодебай открывает набор на осенний поток продвинутого курса Python для тех, кто хочет прокачать свои навыки в кибербезопасности.
Python EH - курс про особенности применения ЯП Python в сфере кибербезопасности. Будет полезен не только пентестерам, но и программистам разных специализаций. Узконаправленный и углубленный - курс не для новичков, но для тех, кто хочет быть конкурентноспособным на рынке.
Запись через нашего бота или форму на сайте.
Реклама. ООО "АКАДЕМИЯ КОДЕБАЙ". ИНН 9706020333. erid: 2Ranymz6uV2
#вопросы_с_собеседований
Какие различия есть между методами для списков append() и extend()?
Методы append() и extend() для списков имеют разное назначение:
- append() добавляет один элемент в конец списка, принимая в качестве аргумента этот элемент.
my_list.append(10) - добавит число 10 в конец списка my_list.
- extend() расширяет список добавляя в него несколько элементов сразу. В качестве аргумента принимается итерируемый объект (список, кортеж и т.п.).
my_list.extend([10, 20, 30]) - добавит числа 10, 20, 30 в конец списка my_list.
Генераторы коллекций
Генераторы коллекций позволяют эффективно создавать большие коллекции данных без необходимости хранить всю коллекцию в памяти.
Вместо этого генератор возвращает элементы коллекции по одному при каждом вызове next().
Генераторы коллекций создаются с помощью функций-генераторов, использующих ключевое слово yield.
В примере каждый вызов next() на генераторе squares_gen возвращает следующий квадрат и сохраняет текущее состояние генератора.
#это_база
#вопросы_с_собеседований
Почему не стоит использовать изменяемые объекты как параметры по-умолчанию?
В Python не рекомендуется использовать изменяемые объекты в качестве значений параметров по умолчанию по следующим причинам:
- Значения по умолчанию вычисляются один раз при определении функции, а не при каждом вызове.
- Если использовать изменяемый объект (список, словарь), то изменения в нем будут сохраняться между вызовами функции. Это может привести к неочевидному поведению и трудноуловимым ошибкам при многократном вызове функции.
В качестве альтернативы можно задавать значение по умолчанию как None, а в теле функции создавать новый изменяемый объект, если значение не передано.
Такой подход позволяет избежать "эффекта переноса" состояния между вызовами и делает код более понятным и предсказуемым.
#вопросы_с_собеседований
Что такое отображение (mapping)?
Отображение (mapping) – это контейнер, который хранит пары ключ-значение. Отображения позволяют связывать ключи с значениями, чтобы можно было получить значение по ключу.
Среди основных отображений: dict, set, namedtuple.
LangChain
LangChain — это библиотека, которая позволяет создавать цепочки обработки естественного языка (NLP).
Основные возможности:
— Создание конвейеров обработки текста.
— Подключение различных модулей NLP (токенизация, лемматизация и т. д.).
— Объединение моделей в единую цепочку.
— Удобная настройка и отладка.
Используется для:
— Построения приложений для анализа текста на Python.
— Быстрого прототипирования решений для обработки естественного языка.
— Объединения разных библиотек NLP в одном workflow.
— Упрощения процесса экспериментов с моделями обработки текста.
В этом примере создается цепочка из двух моделей OpenAI — Curie и Babbage, а текст передается поочередно в каждую модель.
#вопросы_с_собеседований
Как работает хэш-таблица?
Принцип работы:
— Элементы хэш-таблицы хранятся в виде пар ключ-значение.
— Каждому ключу сопоставляется уникальный целочисленный индекс с помощью хэш-функции.
— Этот индекс используется для прямого доступа к ячейке таблицы, в которой и хранится значение.
— Если по одному индексу хэш-функции попадает несколько ключей, используется механизм разрешения коллизий (цепочки, открытая адресация).
— Хэш-таблица динамически изменяет свой размер, чтобы оптимизировать память и время доступа.
Приглашаем на митап по Pytup в Новосибирске
19 августа проведем уютный митап по Python! Регистрация уже открыта! Мы решили познакомиться с сообществом разработчиков Новосибирска, поэтому проведем мероприятие для максимально широкой аудитории: от джунов до сеньоров и техлидов. Обсудим последние новости языка, поделимся кейсами и практическими решениями, поговорим про ML и науку.
В программе:
🔸Сергей Яхницкий, разработчик, Яндекс Такси
Новости из мира Python: PEP, которые изменят ваш мир
🔸Кузьма Лешаков, архитектор платформы данных, Yandex Cloud
Решаем задачу триггера в событийно-ориентированной архитектуре
🔸Кристина Климовских, разработчик, 2GIS
Про тестирование зоопарка парсеров
🔸Михаил Иванов, Python-разработчик, Контур
Python на производстве: опыт, проблемы и решения
🔼 Для вашего удобства подготовили карточки с классными спикерами, которые выступят с докладами на нашем митапе.
19 августа встречаемся в Новосибирске и на онлайн-трансляции.
Узнать подробности и зарегистрироваться можно тут.
ℹ️ Подписывайтесь на чат митапа: @Pytup
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 кода.
Метод count()
count() - простой и удобный способ получить число вхождений элемента в последовательности за линейное время. Полезен при подсчете статистики, анализе данных и других задачах.
Метод принимает в качестве аргумента элемент, количество которого нужно посчитать и возвращает число - количество найденных вхождений элемента.
Работает для списков, кортежей, строк.
#это_база
ИТ + научпоп + музыка = большой ИТ-пикник в Москве 💛
2 сентября Тинькофф, CodeFest и Мельница собирают большой благотворительный ИТ-фестиваль. Встречаемся в Коломенском на максимально летнем вайбе.
В программе: ИТ- и научпоп-лектории, выступления топовых спикеров, воркшопы, интерактивные зоны и вишенка на торте — музыкальные перформансы от Антохи MC, Zoloto, Therr Maitz, The Hatters, «Сироткина», а также секретного хедлайнера. Как думаете, кто им может быть?
Для участия нужно выбрать благотворительный фонд из списка и сделать донат от 1000 рублей. Подробности и регистрация — тут.
Реклама. АО "Тинькофф Банк"
object
object - это встроенный класс, от него наследуются сразу все новые классы, если явно не указан другой базовый класс.
У объектов класса object есть методы init, str, repr и другие. Их можно переопределять в дочерних классах.
Атрибуты класса объявляются внутри класса, но вне всех методов. Атрибуты экземпляра объявляются в init.
Чтобы использовать класс object в своем коде, достаточно создать класс, унаследованный от object.
Memray
Memray - это библиотека для профилирования памяти и она является важным инструментом оптимизации производительности Python программ.
Библиотека отслеживает выделение и освобождение памяти при работе программы, поддерживает отслеживание ссылок на объект, применятся для профилирования на серверах и в виртуальных окружениях.
В примере мы используем декоратор memray.profile, который будет отслеживать все выделение и освобождение памяти внутри функции my_func().
При запуске этого кода memray выведет отчёт.
❗️Как развиваться Python-разработчику?
Наращивать объем знаний и навыков. За этим приходите на вебинар, приуроченный к старту онлайн-курса «Python Developer. Professional» в OTUS.
✅ 15 августа — «Code review»
Обсудим основы разработки API с помощью фреймворка FastAPI, рассмотрим пример небольшого приложения и осветим особенности развертывания эксплуатации.
🧑💻 Спикером выступит Станислав Ступников, руководитель разработки в VK. Эксперт с 10+ лет опыта промышленной разработки.
💪 Погрузим вас в современную «промышленную» разработку на Python. Главный фокус курса на основных Software Engineering компетенциях Python-разработчика и формировании прагматичного подхода к решению задач.
👉 ПРОЙТИ ТЕСТ для регистрации на открытый урок
https://otus.pw/PXkh/Нативная интеграция. Информация о продукте www.otus.ru
#вопросы_с_собеседований
Как происходит проверка множеств на равенство?
- Для равенства множества должны содержать одинаковые элементы.
- Порядок элементов значения не имеет.
- Количество вхождений элемента также не важно.
- Если элементы в множествах разные - множества не равны.
- Другие атрибуты или свойства множеств, кроме состава элементов, не проверяются.
Таким образом, множества равны, когда они имеют одинаковые элементы, вне зависимости от порядка или количества вхождений.
Удаление префиксов и суффиксов
Методы .removeprefix() и .removesuffix() служат для удаления префикса или суффикса из строки соответственно. Эти методы были добавлены в Python 3.9.
Методы возвращают новую строку без указанного префикса или суффикса. Исходная строка не изменяется.
Если строка не начинается/заканчивается на указанный префикс/суффикс, возвращается копия исходной строки.
Методы вызывают исключение ValueError, если префикс/суффикс пустой.
#это_база
Pygal
Pygal - это библиотека для визуализации данных с помощью SVG.
Она позволяет строить разнообразные интерактивные графики, такие как линейные, столбчатые, круговые диаграммы.
Этот код создает объект диаграммы line_chart, добавляет в нее несколько рядов данных, задает заголовок, подписи по оси X и сохраняет результат в файл SVG.
В итоге получается интерактивный график изменения доли браузеров за определенный период.
Frozenset
frozensets используются для создания неизменяемых множеств.
Основные особенности frozensets:
- Они неизменяемы, то есть элементы нельзя добавить или удалить после создания.
- Они могут использоваться как ключи в словарях, так как неизменяемы.
- Они быстрее обычных множеств в операциях, так как являются неизменяемыми.
Здесь мы создали frozenset с элементами. Попытка добавить элемент вызывает ошибку, так как frozensets неизменяемы. Затем frozenset используется как ключ в словаре.
dict.get()
Метод dict.get() принимает два аргумента - ключ и значение по умолчанию, и позволяет получить значение по ключу из словаря.
Если ключ присутствует в словаре, возвращается соответствующее значение.
Если ключа нет, возвращается значение по умолчанию, вместо ошибки KeyError.
#это_база
JPype
JPype - это модуль, который позволяет взаимодействовать с кодом на Java из Python.
Основные области применения JPype:
- Доступ к библиотекам Java из Python.
- Интеграция с существующим Java кодом.
- Использование JVM из Python.
В этом примере мы импортируем класс String из Java и создаем экземпляр этого класса.
Затем вызываем метод toUpperCase() у объекта javaString. Таким образом из Python мы можем работать с объектами и вызывать методы Java.
Результат работы программы:
HELLO FROM JAVA!