seniorpy | Unsorted

Telegram-канал seniorpy - Senior Python Developer

54326

№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy

Subscribe to a channel

Senior Python Developer

Функция current_thread()

Функция current_thread() из модуля threading в Python используется для получения объекта Thread, представляющего текущий поток выполнения.

В Python 3.10 и более поздних версиях она возвращает:
— «Идентификатор потока» текущего потока. Это ненулевое целое число. Его значение не имеет прямого смысла; оно предназначено как магическое число, которое можно использовать, например, для индексирования словаря потоко-специфичных данных.
— Идентификаторы потоков могут быть переиспользованы, когда один поток завершается, а другой создается.

#для_продвинутых

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

Senior Python Developer

uniformvariate

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

Синтаксис:

numpy.random.uniformvariate(low, high, size=None)


Параметры:
low (float): Нижняя граница диапазона.
high (float): Верхняя граница диапазона.
size (int, optional): Размер возвращаемого массива.

#для_продвинутых

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

Senior Python Developer

PyJWT

PyJWT — это библиотека Python для работы с JSON Web Tokens (JWT). JWT — это компактный формат для передачи информации между сторонами, позволяющий обеспечить безопасность и аутентификацию.

#для_продвинутых

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

Senior Python Developer

Trio

Trio — это библиотека асинхронного программирования для Python, которая упрощает написание высокопроизводительных и масштабируемых приложений. Она основана на модели "async/await" и предоставляет ряд инструментов для работы с асинхронными операциями, такими как сетевые запросы, обработка файлов и I/O.

#для_продвинутых

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

Senior Python Developer

collections.Counter

Collections.Counter — это класс, предназначенный для подсчета хешей (hashable объектов).
Он позволяет удобно и эффективно подсчитывать вхождения элементов в какой-либо последовательности.

Основное отличие Counter от обычного словаря в том, что он не выбрасывает исключение, если ключ не существует, а просто создает новый ключ со значением 0. Это упрощает подсчет элементов.
Counter может принимать на вход любую итерируемую последовательность (список, кортеж и т.д.).

Основные способы использования Counter:
— Подсчет слов или букв в тексте.
— Подсчет появления элементов в списке или итераторе.
— Нахождение наиболее часто встречающихся элементов.
— Использование при решении задач на вероятность и статистику.

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

Senior Python Developer

collections.MutableMapping

Collections.MutableMapping — это интерфейс, который представляет изменяемое отображение (словарь).
Он наследуется от интерфейса Mapping и добавляет методы для изменения отображения, такие как __setitem__, __delitem__ и clear.

Основное преимущество в использовании MutableMapping — это возможность передавать экземпляры такого класса в любое API, ожидающее словарь.
Например, во многих функциях в стандартной библиотеке есть параметры типа dict. Если создать класс, реализующий MutableMapping, его экземпляры можно будет передавать в такие функции.

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

Senior Python Developer

Функции, поддерживающие только именованные аргументы (kwargs)

**kwargs (keyword arguments) — это способ передачи произвольного количества именованных аргументов в функцию.

В функциях после позиционных и обычных именованных аргументов указывают параметр **kwargs.

В kwargs передаются аргументы в виде ключ-значение. Внутри функции kwargs становится словарем, где ключи — имена аргументов, значения — значения аргументов.
Благодаря этому через kwargs можно передать любое количество дополнительных аргументов в функцию.

Если одновременно используются *args и **kwargs, то в вызове сначала указываются *args.

#это_база

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

Senior Python Developer

#вопросы_с_собеседований
Как Python ищет модули при импорте?

При импорте модулей интерпретатор следует определенному алгоритму поиска:

1. Сначала проверяются встроенные модули, которые поставляются в составе самого Python.

2. Затем по порядку просматриваются пути, перечисленные в sys.path — глобальной переменной, которая содержит список каталогов для поиска модулей.
По умолчанию в sys.path входят: текущий рабочий каталог скрипта, PYTHONPATH — каталоги указанные в этой переменной окружения, каталоги стандартной библиотеки Python.

3. Если модуль не найден — генерируется исключение ImportError.

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

Senior Python Developer

Argcomplete

Argcomplete — это библиотека для автодополнения аргументов командной строки.
Она позволяет легко добавить автодополнение для argparse в интерактивных оболочках (например, bash, zsh).

Библиотека работает в разных оболочках (bash, zsh и др.) без изменения кода и обладает простой интеграцией — достаточно декорировать функцию argparse декоратором @argcomplete.register.

Основные возможности argcomplete:
— Автоматическое дополнение имен файлов и каталогов при вводе путей.
— Предложение вариантов для аргументов на основе возможных значений, описанных через argparse.
— Дополнение для подкоманд в приложениях с вложенной структурой команд.

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

Senior Python Developer

#вопросы_с_собеседований
Что делать если нужно сериализовать данные, которые не поддерживаются стандартным модулем json?

Если нужно сериализовать объекты, которые по умолчанию не поддерживаются модулем json, то есть несколько вариантов:

— Реализовать методы __getattr__ и __setattr__ в классе объекта, чтобы преобразовать его в словарь, который уже можно сериализовать в JSON.

— Использовать декоратор dataclass из модуля dataclasses для автоматической генерации методов сериализации.

— Создать собственный класс-наследник json.JSONEncoder и переопределить метод default(), чтобы указать как сериализовать нестандартные объекты.

— Использовать библиотеку marshmallow для создания схем сериализации/десериализации сложных объектов в JSON.

— Преобразовать объекты в dict или list вручную перед сериализацией с помощью методов объекта или отражения (reflection).

— Использовать другой формат сериализации, например YAML или MessagePack, который может поддерживать произвольные типы.

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

Senior Python Developer

Атрибут __all__

Атрибут __all__ используется для контроля того, какие элементы модуля экспортируются при импорте с помощью from module import *.
Этот атрибут должен содержать список имен, которые будут экспортированы.

Если __all__ не определен, то при импорте будут экспортированы все имена, не начинающиеся с _.

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

Проще говоря, __all__ — это простой механизм контроля области видимости при импорте. Он помогает организовать чистый публичный интерфейс модуля.

#это_база

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

Senior Python Developer

Pyspark

Pyspark — это библиотека для работы с Apache Spark на языке Python. Она позволяет выполнять распределенные вычисления на кластерах и обрабатывать большие объемы данных.

Основные возможности Pyspark:
— Pyspark автоматически распределяет данные и вычисления между узлами кластера для максимальной производительности.
— В Pyspark есть специальные типы данных (RDD, DataFrame, Dataset), которые позволяют удобно работать с табличными и структурированными данными.
— Поддержка чтения и записи в разные хранилища данных и форматы файлов.
— Встроенные алгоритмы машинного обучения для классификации, кластеризации, регрессии.
— Интуитивно понятный API, позволяющий применять Pyspark вместе с другими популярными библиотеками Python для анализа данных.

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

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

Senior Python Developer

Функция sorted

sorted() используется для сортировки элементов в списке, кортеже или другой последовательности.
Она возвращает новый отсортированный список или итератор, не изменяя исходную последовательность.

По умолчанию сортировка выполняется в возрастающем порядке. Для сортировки в убывающем порядке нужно указать аргумент reverse=True.
Для сортировки по определенному ключу можно использовать ключевой аргумент key. Он принимает функцию, которая извлекает ключ для сортировки из каждого элемента.

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

#это_база

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

Senior Python Developer

Библиотека Typer

Typer — это библиотека для создания командных интерфейсов приложений на Python.
Она позволяет легко создавать CLI приложения с поддержкой аргументов, опций, субкоманд и автоматической генерацией help.

Основные возможности Typer:
— Декоратор @typer.command() для определения команд и подкоманд.
— Автоматический парсинг аргументов и опций.
— Валидация и tipped annotations для аргументов и опций.
— Автоматическая генерация help с описаниями.
— Встроенная поддержка Click для обратной совместимости.

Typer часто используется для создания утилит командной строки, CLI интерфейсов для python приложений, API клиентов, DevOps инструментов и других задач, где нужен простой и удобный интерфейс командной строки.

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

Senior Python Developer

Точка входа в программу

Конструкция if __name__ == '__main__' используется для того, чтобы определить, запущен ли файл модуля напрямую или импортирован из другого модуля.

Эта конструкция позволяет запустить какой-то код только при прямом вызове модуля, так как name будет равно 'main' только если модуль запущен напрямую.

Это позволяет запускать программу полностью только когда она основная, а не импортируется в качестве модуля.

#это_база

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

Senior Python Developer

ChainMap

ChainMap — это инструмент из модуля collections, который позволяет объединить несколько словарей в один объект, доступный как единый словарь. Это удобно, когда вам нужно работать с несколькими словарями, представляющими разные области видимости или контексты, и вам нужно установить приоритеты доступа к данным.

#для_продвинутых

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

Senior Python Developer

Функция vonmisesvariate

Функция vonmisesvariate из модуля random в Python используется для генерации случайных чисел, подчиненных распределению фон Мизеса, также известному как круговое нормальное распределение или распределение Тихонова.

Аргументы функции:
mu: Среднее значение угла, выраженное в радианах в диапазоне от 0 до 2π.
kappa: Параметр концентрации, который должен быть больше или равен 0. Чем больше значение kappa, тем более концентрируется распределение вокруг среднего значения.

#для_продвинутых

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

Senior Python Developer

👨🏻‍💻 AI в бэкенд-задачах — на Podlodka Backend Crew

Код теперь может написать агент, но за результат всё ещё отвечаете вы. Организаторы Podlodka Backend Crew собрали конференцию о том, как работать с бэкендом после того, как AI написал код.

Причём в программе нет докладов в жанре «у нас все получилось» — только реальная практика. Конференция пройдёт с 26 по 30 октября.

🧠️️️️ Участники сезона:

• Разберут пулл‑реквесты от агента и попробуют предотвратить возможные инциденты на рулетке кейсов

• Выяснят, какие неожиданные ловушки скрываются в OpenAPI и на что обращать внимание при разработке контрактов

• Разберут антипаттерны в AI-юнит-тестах, узнают, как их избежать с помощью современных инструментов, и заберут себе новый агентский скилл

• Спроектируют бэкенд дейтинг-приложения на архитектурной кате и решат, где в нём действительно нужен AI.

Формат Podlodka Backend Crew
— комфортный онлайн: 5 дней, утренние и вечерние сессии в Zoom.

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

Такого вовлечения не получить на обычной конференции.

🔗 Изучайте программу и присоединяйтесь: https://podlodka.io/becrew

Скидка по промокоду backendSenior

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

Senior Python Developer

#вопросы_с_собеседований
Что такое замыкание?

Замыкание (closure) — это функция, которая запоминает значения переменных из области видимости, в которой она была создана, и может получить к ним доступ, даже если она будет вызвана за пределами этой области видимости.

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

Обычно замыкания используются, если нужно:
— Создать функцию с сохранением некоторого состояния между вызовами.
— Избежать использования глобальных переменных и повысить инкапсуляцию.
— Частично применить функцию без вызова (создание другой функции).

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

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

Senior Python Developer

💻 Зависимости Python-проекта можно устанавливать и обновлять быстрее — если правильно настроить инструменты.

На открытом уроке разберём uv — современный инструмент для управления Python-проектами и зависимостями.

🔥 Вы на практике:
— изучите ключевые концепции uv;
— разберёте основные команды для управления проектом и зависимостями;
— узнаете, как использовать uv при сборке Docker-образов;
— поймёте, как применять uv в своих проектах.

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

Урок будет полезен всем, кто использует Python и хочет освоить современный инструмент uv.

Открытый урок проходит в преддверии старта курса «Python-разработчик. Продвинутый уровень».

⏰ 29 октября в 20:00 МСК. Участие бесплатно: https://otus.pw/IIjm/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

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

Senior Python Developer

Атрибут __slots__

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

__slots__ определяется как список имен атрибутов в определении класса. Экземпляры класса с __slots__ могут иметь атрибуты только с именами, определенными в __slots__. Попытка создать новый атрибут приведет к ошибке.

Использование __slots__ экономит память, так как экземпляры не создают словарь __dict__ для атрибутов.

__slots__ не наследуются, для каждого подкласса нужно определять свои слоты.

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

#это_база

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

Senior Python Developer

#вопросы_с_собеседований
Что такое фабрика декораторов?

Фабрика декораторов — это особая разновидность функции высшего порядка, которая возвращает декоратор вместо прямого результата. Главное отличие фабрики декораторов от обычного декоратора в том, что она принимает аргументы, которые могут конфигурировать логику декоратора.

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

Главные преимущества фабрик декораторов — это возможность абстрагироваться от конкретики реализации, избежать дублирования кода и создавать интуитивный API для декораторов с настройками.

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

Senior Python Developer

+1 навык в копилку
Разбираемся с одной из самых популярных СУБД

Умение работать с СУБД PostgreSQL — база, которая точно не будет лишней. В бесплатном курсе от Selectel собрали все необходимое для погружения: от основ реляционной модели до создания таблиц и работы со сложными запросами. Вы актуальную теорию, практические задания и экономию десятков часов на самостоятельных поисках информации.

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

Реклама. АО "Селектел". erid:2W5zFJyeSeu

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

Senior Python Developer

🤔 API работает — но как убедиться, что после очередного изменения оно продолжит работать корректно?

На открытом уроке разберём, как автоматизировать проверку FastAPI-приложений с помощью pytest и TestClient.

🔥Вы на практике:
— отправите запросы к приложению через TestClient;
— напишете тесты для корректных и некорректных данных;
— проверите HTTP-статусы и содержимое JSON;
— разберётесь, как подменять зависимости приложения для проверки нужного поведения.

Урок будет полезен Python-разработчикам, которые уже создают API, и начинающим разработчикам серверной части, которые пока тестируют приложения вручную.

Открытый урок проходит в преддверии старта курса «Python-разработчик».

⏰26 октября в 20:00 МСК. Принять участие: https://otus.pw/9dZFb/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

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

Senior Python Developer

#вопросы_с_собеседований
Что такое сериализация?

Сериализация — это процесс преобразования объектов в поток байтов для сохранения или передачи.
Это позволяет сохранить состояние объекта в файл или базу данных и восстановить его позже.

Основные преимущества сериализации:
— Сохранение и восстановление объектов между сессиями программы.
— Передача объектов по сети между приложениями и машинами.
— Преобразование объектов в формат хранения, независимый от платформы.

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

Senior Python Developer

Plumbum

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

Основные возможности библиотеки:
— Удобный синтаксис для запуска команд и программ из Python кода. Позволяет вызывать команды командной строки так же просто, как обычные функции.
— Автоматическое формирование командной строки. Можно передавать аргументы и параметры в виде обычных переменных, Plumbum сам сформирует командную строку.
— Перенаправление ввода/вывода. Поддержка стандартных операторов Unix для работы с потоками данных.
— Проверка кодов возврата и обработка ошибок.
— Локальное или удаленное выполнение. Возможность запускать команды как локально, так и по SSH на удаленных хостах.

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

Senior Python Developer

#вопросы_с_собеседований
Что будет, если декоратор не возвращает ничего?

Если декоратор не возвращает ничего, то происходит следующее:
— Декоратор заменяет оригинальную декорируемую функцию на значение None.
— При попытке вызвать декорированную функцию произойдет ошибка AttributeError, поскольку None не является вызываемым объектом.
— Выполнение декорируемого кода на самом деле не происходит.
— Декоратор фактически "срывает" работу декорируемой функции, делая ее невызываемой.

Чтобы этого избежать, декоратор обязательно должен возвращать некоторое вызываемое значение — либо оригинальную функцию, либо другую функцию-обёртку.
Таким образом, не возвращая ничего декоратор нарушает ожидаемое поведение и "ломает" декорируемый код.

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

Senior Python Developer

Click

Click — популярная библиотека для создания интерфейса командной строки (CLI) в приложениях Python.
Основные преимущества Click — простота использования, элегантный и понятный код, мощные возможности по созданию комплексных CLI. Работает на Python 3.6 и выше.

Возможности:
— Определение команд и групп команд с помощью декоратора @click.command().
— Декларативное описание аргументов и опций.
— Автоматический парсинг аргументов командной строки.
— Генерация help сообщения.
— Поддержка bash/zsh автодополнения.
— Вложенные команды и группы подкоманд.
— Цветной вывод в терминал.

Click широко используется для создания консольных утилит, CLI интерфейсов для web фреймворков, DevOps инструментов, скриптов автоматизации и других задач, где требуется командная строка.

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

Senior Python Developer

#вопросы_с_собеседований
Что такое коллизия?

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

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

Чтобы решить проблему коллизий, в Python используются разные стратегии, например:
— Цепочки: списки элементов внутри ячейки таблицы.
— Открытая адресация: подбор следующей свободной ячейки.
— Перехеширование: генерация нового хеша при коллизии.

Уменьшение коллизий позволяет повысить производительность операций с хеш-таблицами и словарями.

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

Senior Python Developer

#вопросы_с_собеседований
Что такое подгенератор (subgenerator)?

Подгенератор создается с помощью конструкции yield from внутри генератора.

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

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

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