seniorpy | Unsorted

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

54326

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

Subscribe to a channel

Senior Python Developer

Атрибут __all__

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

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

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

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

#это_база

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

Senior Python Developer

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

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

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

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

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

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

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

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

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

Senior Python Developer

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

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

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

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

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

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

Senior Python Developer

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

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

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

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

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

#это_база

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

Senior Python Developer

collections.MutableMapping

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

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

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

Senior Python Developer

3 июля в 18:00 МСК OTUS проводит открытый урок «Как правильно готовить данные для ML‑моделей?».

✔️ Мы разберём, почему чистый датасет решает половину задачи, покажем EDA‑приёмы и соберём полный pipeline предобработки на Python. Всё на живых примерах, которыми делятся практикующие ML‑инженеры.

📖 Участники поймут, как избежать «мусорных» ошибок, упростить обучение моделей и ускорить вывод решений в production.

Спикер Мария Тихонова – PhD Computer Science, Senior Data Scientist и преподаватель одного из крупнейших университетов России.

➡️ Мероприятие проходит в преддверие старта курса «Специализация Machine Learning», участники получат скидку на обучение. Оставьте заявку прямо сейчас: https://otus.pw/jRiI/

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

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

Senior Python Developer

Trio

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

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

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

Senior Python Developer

PyJWT

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

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

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

Senior Python Developer

🚀Хотите улучшить качество своего кода и повысить его надежность? Присоединяйтесь к открытому вебинару «Основы аннотаций типов в Python» от OTUS!

На вебинаре мы:

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

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

⚡️Присоединяйтесь 26 июня в 20:00 и узнайте, как аннотации типов сделают ваш код более безопасным и надежным!
Запишитесь прямо сейчас и получите доступ к вебинару: 
https://otus.pw/XDVq/

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

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

Senior Python Developer

ChainMap

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

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

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

Senior Python Developer

Функция current_thread()

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

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

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

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

Senior Python Developer

Вам нравится читать контент на этом канале?

Возможно, вы задумывались о том, чтобы купить на нем интеграцию?

Следуйте 3 простым шагам, чтобы сделать это:

1) Нажмите на ссылку: Вход
2) Пополняйтесь удобным способом
3) Размещайте публикацию

Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.

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

Senior Python Developer

Функция scandir()

Функция os.scandir() в Python используется для получения итератора объектов os.DirEntry, соответствующих записям в каталоге, заданном указанным путем. Записи возвращаются в произвольном порядке, а специальные записи '.' и '..' всегда будут в начале списка.

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

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

Senior Python Developer

Обрабатываем номера телефонов

Пакет phonenumbers основан на библиотеке libphonenumber от Google, которая позволяет форматировать, парсить и проверять номера телефонов.

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

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

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

Senior Python Developer

Аргументы командой строки

При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной argv во встроенном модуле sys.

Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.

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

Senior Python Developer

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

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

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

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

Senior Python Developer

Argcomplete

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

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

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

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

Senior Python Developer

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

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

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

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

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

Senior Python Developer

Атрибут __slots__

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

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

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

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

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

#это_база

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

Senior Python Developer

collections.Counter

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

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

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

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

Senior Python Developer

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

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

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

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

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

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

Senior Python Developer

VK Weekend Offer: отправьте заявку, пройдите интервью и получите офер!

28–29 июня VK проведёт Weekend Offer для бэкендеров с опытом от трёх лет. Участников со знанием Java, Go, Python или C++ ждут технические собеседования, знакомство с продуктами и, если всё сложится, офер уже в конце выходных.

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

Подробности — на сайте.

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

Senior Python Developer

Функция vonmisesvariate

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

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

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

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

Senior Python Developer

uniformvariate

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

Синтаксис:

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


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

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

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

Senior Python Developer

🧑🏻‍💻Хотите освоить один из самых востребованных языков программирования и стать Python-разработчиком?

Присоединяйтесь к курсу «Python Developer. Basic» от OTUS! В рамках курса вы:

- освоите базовый синтаксис Python;
- изучите фреймворки FastAPI и Django;
- научитесь работать с базами данных и API;
- поймете основы автотестирования, асинхронного программирования и разработки на Python.

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

⚡️Оставьте заявку прямо сейчас и получите скидку на обучение: https://otus.pw/chmlD/

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

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

Senior Python Developer

Функция statvfs

Функция statvfs() используется для получения информации о файловой системе, содержащей указанный путь. Она возвращает объект класса os.statvfs_result, атрибуты которого представляют информацию о файловой системе.

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

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

Senior Python Developer

Функция getweakrefcount()

Функция weakref.getweakrefcount() в Python возвращает количество слабых ссылок и прокси-объектов, связанных с данным объектом.

Синтаксис:

weakref.getweakrefcount(object)


Параметры:
object: объект, для которого нужно узнать количество слабых ссылок и прокси-объектов.

Возвращаемое значение:
Целое число, представляющее количество слабых ссылок и прокси-объектов, связанных с объектом.

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

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

Senior Python Developer

Ты будешь жалеть, что не узнал это о девушках раньше.

На канале Творчество чувств автор с многолетним опытом всех форматов отношений рассказывает о тонкостях женской психологии, которые ВАЖНО узнать перед тем, как подкатывать к той самой:

— Почему 95% девушек непригодны для построения отношений?
— 3 признака, кричащие о том, что девушка точно изменит в будущем
— Как за несколько сообщений влюбить в себя любую девушку


Подпишись и узнай секрет женской симпатии:
t.me/+NcZ3vFzbiY5mYWI6

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

Senior Python Developer

Проверка истинности объекта класса

Для того, чтобы определить поведение при проверке на истинность объектов классов в python3 есть "магический" метод __bool__(), который был добавлен на замену устаревшему __nonzero__() в python2.

Если данный метод определен в классе, то он будет вызываться при каждой проверке объекта на истинность а также с помощью функции bool(). Метод должен возвращать False или True.

Если __bool__() не определен, будет вызываться метод __len__(), если он определен, и, соответственно, объект будет считаться истинным, если результат __len__() не будет равен нулю. Если в классе не определены ни __len__(), ни __bool__(), все его экземпляры будут истинными.

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

Senior Python Developer

#vacancy #вакансия #Python #Tech_Lead

Technical Lead Backend на Python в Фемиду
Яндекс
Москва, Санкт-Петербург
гибрид /удалёнка
Tech Lead

Фемида — это система, которая делает наём в Яндексе по-настоящему быстрым, эффективным и современным. Внутри Яндекса мы позволяем автоматизировать подбор лучших кандидатов, и наш сервис уже используется не только в России, но и в других странах, помогая компаниям по всему миру расти и развиваться быстрее.
Вы станете главным архитектором и техническим драйвером backend-направления в одной из ключевых команд. Главная ставка — на умение продумывать архитектуру, развивать сервисы и доводить их до идеального состояния для бизнеса и конечных пользователей. People management не требуется: команда ждёт человека, внутри которого — двигатель профессионализма и архитектурной зрелости!

Почему это классная возможность
• Прямая ответственность за архитектуру продукта, который превращает наём в суперсилу огромной компании.
• Редкий шанс строить сервис под себя — вокруг сильной команды без жёсткой бюрократии. Зато у нас высокие требования к самостоятельности, гибкости, умению находить лучшие решения.
• Простор для технических экспериментов: приветствуются идеи, спор, драйв и желание не просто поддерживать, а развивать. Если вы мечтаете оставить свою подпись в архитектуре крупного продукта с реальным влиянием на весь Яндекс — откликайтесь!

Какие задачи вас ждут
Декомпозиция монолита
Спроектировать и реализовать отделение одного или нескольких сервисов от большого монолита, выстраивать современную микросервисную архитектуру.
Архитектура и ролевые модели
Переработать и усовершенствовать ролевую модель, сделать её гибкой, прозрачной, безопасной.
Производительность
Вести рефакторинг сложного кода, строить систему метрик и алертинга для контроля производительности.
Влияние
Работать над платформой, которой пользуются топовые рекрутеры и СТО Яндекса; каждый релиз - вклад в развитие бизнеса.

Мы ждем, что вы
• Шикарно владеете Python, знаете и любите его глубоко
• Продумывали архитектуру, запускали сервисы с нуля, рефакторили масштабные решения
• Плотно работали с PostgreSQL, MongoDB, Redis, умеете оптимизировать запросы
• Глубоко понимаете современные Python-фреймворки (Django, FastAPI, Flask)
• Писали и интегрировали RESTful API, разбираетесь в HTTP, JSON, умеете документировать API
• Знаете, как построить тестовую инфраструктуру (PyTest, unittest и др.), автоматизацию CI/CD (хотя бы на уровне GitLab)
• Знаете методы аутентификации (OAuth, JWT), методы защиты (CSRF, XSS)
• Умеете быстро анализировать, находить и чинить bottlenecks в сложных системах
• И главное — хотите влиять на бизнес и продукт, а не просто закрывать таски

Будет плюсом, если вы
• Работали с Docker, Kubernetes, облаками (любым провайдером)
• Писали на Go и не боитесь пару строчек легаси поддержать
• Любите писать понятную документацию кода, ввели привычку делать Docstrings и Sphinx (или аналоги)
• Инициативны, не боитесь предлагать перемены, умеете убедительно их внедрять

С нас как всегда: помимо интересных задач — ДМС, развитие, спорт, скидки и пр.

Узнать подробнее и откликнуться.

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