№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy
#вопросы_с_собеседований
Что такое Green thread?
Green thread (зеленые треды) — легковесные треды внутри виртуальной машины.
Операционная система не видит их. С точки зрения ОС запущен один процесс виртуальной машины, а что внутри нее — неизвестно.
Такими тредами управляет сама виртуальная машина: порождает, исполняет, согласует доступ к ресурсам.
⚡️ Онлайн-хакатон MORE.Tech 5.0 с призовым фондом 1 100 000 рублей от Банка ВТБ!
🟣 Треки:
Mobile+Web: разработай сервис для подбора оптимального банковского отделения;
Metaverse: создай элементы виртуального пространства для взаимодействия пользователей с продуктами банка.
Что тебя ждет:
🔹 Познакомишься с опытными ИТ-экспертами ВТБ;
🔹 Прокачаешься в разработке за 3 дня как за месяц.
Помимо главного денежного приза в 1 100 000 рублей, тебя ждет фирменный мерч и подарки!
Если нет своей команды — поможем ее собрать!
Регистрируйся и вступай в чат участников, получи ответы на волнующие вопросы, найди команду или создай свою.
▶️ Регистрация уже идет, успевай подать заявку по ссылке
Реклама. ООО "ФИЗТЕХ ДЖЕНЕЗИС". ИНН 7735184156. erid: LjN8K135i
Библиотека xarray
xarray предназначена для работы с многомерными данными и массивами.
Она позволяет удобно хранить и обрабатывать данные с метаданными, такими как координаты, время и другие измерения.Xarray
часто используется в научных вычислениях и анализе данных, особенно при работе с геопространственными данными, временными рядами, метеоданными и другой многомерной информацией.
Основные преимущества xarray
— это возможность помечать оси данных и выполнять операции по этим осям, легкость совместного использования данных и метаданных.
В этом примере создана DataArray
со случайными данными размерностей 2x3. Для осей заданы метки "city" и "year". Это позволяет легко обращаться к данным по городам и годам. Xarray
сохраняет метаданные вместе с данными.
Метод id()
Метод id() возвращает уникальный идентификатор объекта.
Каждый объект в Python имеет свой идентификатор, который назначается при создании объекта. Этот идентификатор гарантированно уникален в пределах жизни объекта.id()
позволяет получить числовое представление идентификатора объекта. Это может быть полезно при отладке и тестировании программы.
#это_база
Посмотрите, как проходит архитектурная секция на открытом собеседовании и как на практике создаётся архитектура сервиса. На примере проектирования системы вы узнаете: •
Какую архитектуру приложения выбрать: монолитную или микросервисную? •
Что такое вертикальное и горизонтальное масштабирование? •
Как выбрать формат и протокол обмена данными в зависимости от типа приложения? •
Какой тип хранения данных выбрать и какие есть подводные камни у каждого из решений? •
Что такое балансировка нагрузки и какие существуют стратегии кэширования? •
Нужно ли затаскивать в проект брокеры сообщений?
Ждём вас 12 сентября, во вторник, в 19:00 по Москве. Будет много полезного!
Встречу проведут:
◾️Дмитрий Шеламов
Senior Backend Engineer в Delivery Hero, Berlin, лид авторов на курсе «Архитектура ПО» в Практикуме
◾️Дмитрий Орлов
Техлид в Яндексе, преподаватель в школе бэкенд-разработки Яндекса, автор курса «Архитектура ПО» в Практикуме
→ Зарегистрируйтесь на вебинар
Как управлять состоянием системы через события?
Event-driven архитектура — концепция программирования, которая позволяет создавать сложные приложения, используя событийно-ориентированный подход. Так создаются распределенные системы, которые легко масштабируются и обладают высокой отказоустойчивостью.
Начните изучать эту технологию на бесплатном открытом уроке «Архитектурный подход Event Driven Architecture» от OTUS: https://otus.pw/YgRc/
На занятии рассмотрим:
✔️ взаимодействие сервисов на основе событий;
✔️ плюсы и минусы такого подхода;
✔️ сочетания событийного и синхронного взаимодействия;
✔️ паттерны проектирования событий;
✔️ подход Event Sourcing и CQRS.
Урок пройдёт 27 сентября в 20:00 мск в рамках курса «Microservice Architecture».
👩💻 Пройдите вступительное тестирование прямо сейчас и зарегистрируйтесь на событие: https://otus.pw/YgRc/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8KTre4
collections.Counter
Collections.Counter — это класс, предназначенный для подсчета хешей (hashable объектов).
Он позволяет удобно и эффективно подсчитывать вхождения элементов в какой-либо последовательности.
Основное отличие Counter
от обычного словаря в том, что он не выбрасывает исключение, если ключ не существует, а просто создает новый ключ со значением 0. Это упрощает подсчет элементов.Counter
может принимать на вход любую итерируемую последовательность (список, кортеж и т.д.).
Основные способы использования Counter
:
— Подсчет слов или букв в тексте.
— Подсчет появления элементов в списке или итераторе.
— Нахождение наиболее часто встречающихся элементов.
— Использование при решении задач на вероятность и статистику.
collections.MutableMapping
Collections.MutableMapping — это интерфейс, который представляет изменяемое отображение (словарь).
Он наследуется от интерфейса Mapping
и добавляет методы для изменения отображения, такие как __setitem__
, __delitem__
и clear
.
Основное преимущество в использовании MutableMapping
— это возможность передавать экземпляры такого класса в любое API, ожидающее словарь.
Например, во многих функциях в стандартной библиотеке есть параметры типа dict
. Если создать класс, реализующий MutableMapping
, его экземпляры можно будет передавать в такие функции.
Атрибут __slots__
Этот атрибут позволяет ограничить создание новых атрибутов в экземплярах класса. __slots__
определяется как список имен атрибутов в определении класса. Экземпляры класса с __slots__
могут иметь атрибуты только с именами, определенными в __slots__
. Попытка создать новый атрибут приведет к ошибке.
Использование __slots__
экономит память, так как экземпляры не создают словарь __dict__
для атрибутов.__slots__
не наследуются, для каждого подкласса нужно определять свои слоты.
Атрибут полезен, когда заранее известны все атрибуты класса и не нужна динамическая задача новых. Например, для простых данных или immutable классов.
#это_база
Hiring Days в VK Cloud
Собеседования в команду IaaS пройдут уже 30 сентября и 1 октября. У вас будет возможность всего за одни выходные стать частью одной из трех команд, обеспечивающих поддержку операционной системой для дата-центров: Network + Services, Storage, Compute.
👉 Узнайте больше и отправляйте отклик до 28 сентября.
🔍 Rust Journey: Хотите освоить язык программирования, который завоевывает мир?
🚀 Илон Маск, один из ведущих инноваторов нашего времени, утверждает, что за Rust будущее. А когда последний раз он ошибался в своих прогнозах? 😉
🪟Также недавно стало известно, что ядро Windows 11 переписывается на Rust.
✨ Не упустите свой шанс быть в авангарде IT-революции. Подписывайтесь на канал Rust Journey и начните свой путь в захватывающий мир Rust сегодня!
Библиотека yt-dlpyt-dlp
— это библиотека и утилита командной строки для скачивания видео с YouTube и других сайтов.
Основные возможности и применение yt-dlp:
— Поддерживает скачивание видео, аудио, плейлистов, каналов и др с YouTube. Помимо этого работает с сотнями других сайтов — Vimeo, Facebook, ВКонтакте, TikTok и др. Позволяет скачивать контент практически отовсюду.
— Извлечение метаданных и обложек видео.
— Конвертация медиафайлов в другие форматы после скачивания.
— Поддержка прокси и лимитов скорости.
— Множество настроек для извлечения данных, именования файлов, пост-обработки и т.д.
— Удобная утилита командной строки и модуль Python для автоматизации.
ArgcompleteArgcomplete
— это библиотека для автодополнения аргументов командной строки.
Она позволяет легко добавить автодополнение для argparse
в интерактивных оболочках (например, bash, zsh).
Библиотека работает в разных оболочках (bash, zsh и др.) без изменения кода и обладает простой интеграцией — достаточно декорировать функцию argparse
декоратором @argcomplete.register
.
Основные возможности argcomplete
:
— Автоматическое дополнение имен файлов и каталогов при вводе путей.
— Предложение вариантов для аргументов на основе возможных значений, описанных через argparse.
— Дополнение для подкоманд в приложениях с вложенной структурой команд.
#вопросы_с_собеседований
Что делать если нужно сериализовать данные, которые не поддерживаются стандартным модулем json?
Если нужно сериализовать объекты, которые по умолчанию не поддерживаются модулем json, то есть несколько вариантов:
— Реализовать методы __getattr__ и __setattr__ в классе объекта, чтобы преобразовать его в словарь, который уже можно сериализовать в JSON.
— Использовать декоратор dataclass из модуля dataclasses для автоматической генерации методов сериализации.
— Создать собственный класс-наследник json.JSONEncoder и переопределить метод default(), чтобы указать как сериализовать нестандартные объекты.
— Использовать библиотеку marshmallow для создания схем сериализации/десериализации сложных объектов в JSON.
— Преобразовать объекты в dict или list вручную перед сериализацией с помощью методов объекта или отражения (reflection).
— Использовать другой формат сериализации, например YAML или MessagePack, который может поддерживать произвольные типы.
Атрибут __all__
Атрибут __all__
используется для контроля того, какие элементы модуля экспортируются при импорте с помощью from module import *
.
Этот атрибут должен содержать список имен, которые будут экспортированы.
Если __all__
не определен, то при импорте будут экспортированы все имена, не начинающиеся с _
.
Использование __all__
позволяет явно указать автору модуля, какие части модуля являются публичным API, а какие — внутренней реализацией.
Это способствует лучшей структуре кода и предотвращает неожиданный экспорт внутренних элементов модуля.
Проще говоря, __all__
— это простой механизм контроля области видимости при импорте. Он помогает организовать чистый публичный интерфейс модуля.
#это_база
#вопросы_с_собеседований
В чем отличие тредов от мультипроцессинга?
Главное отличие заключается в разделении памяти. Процессы независимы друг от друга, имеют раздельные адресные пространства, идентификаторы, ресурсы.
Треды исполняются в совместном адресном пространстве, имеют общий доступ к памяти, переменным, загруженным модулям.
Библиотека igraph
igraph предназначена для работы с графами и сетями. Она позволяет строить, анализировать и визуализировать графы.Igraph
часто используется при анализе социальных сетей, изучении структуры больших сетей (например, ссылок в интернете), в биоинформатике для анализа взаимодействий белков и других задач, связанных с теорией графов.
Основные возможности igraph
— генерация случайных и классических графов, вычисление различных метрик (степени вершин, диаметра графа и т. д.), поиск сообществ и кластеров.
Привет! Мы в МТС активно поддерживаем ИТ-сообщество в России и запускаем всероссийскую олимпиаду по программированию с главным призом в 3 млн рублей.
Для кого? Для школьников, студентов и действующих ИТ-специалистов.
Что будет? Блок онлайн-заданий, митапы и мастер-классы, общение в закрытом Telegram-канале и финальный очный тур с программированием на скорость. Когда олимпиада завершится, мы создадим True Tech Community, где будем делиться полезными и эксклюзивными материалами для разработчиков.
А что еще? Финалистов ждет afterparty, фестиваль технологий, интерактив, квесты, карьерные стенды, где лучшие специалисты смогут получить оффер от МТС.
Регистрация уже открыта! Подробности по ссылке. Ждем тебя!
Реклама. ПАО "МТС". ИНН 7740000076. erid: LjN8KKQwJ
Метод isspace()
Метод isspace() проверяет, является ли символ пробельным.
Пробельными символами считаются:
— Пробел (' '
).
— Табуляция ('\t'
).
— Перевод строки ('\n'
).
— Перевод каретки ('\r'
).
— Прочие unicode символы, определяемые как пробелы.isspace()
возвращает True
, если символ пробельный, и False
в противном случае.
Этот метод удобно использовать для проверки и обработки строк.
#это_база
#вопросы_с_собеседований
Что такое объект первого класса?
Объект первого класса (first-class object) — это объект, который можно использовать точно так же, как и любые другие объекты в этом языке.
К основным признакам объектов первого класса относятся:
— Возможность присваивать объект переменной или элементу структуры данных.
— Возможность передавать объект в функцию в качестве аргумента.
— Возможность возвращать объект из функции в качестве результата.
— Возможность создавать коллекции из таких объектов.
В Python функции, классы, модули, типы и другие объекты являются объектами первого класса.
Это значит, что их можно динамически создавать, удалять, передавать как аргументы и возвращать из функций.
#вопросы_с_собеседований
Что такое замыкание?
Замыкание (closure) — это функция, которая запоминает значения переменных из области видимости, в которой она была создана, и может получить к ним доступ, даже если она будет вызвана за пределами этой области видимости.
Ключевым моментом является то, что замыкание запоминает ссылки на переменные, а не сами значения. Это позволяет обращаться к актуальным значениям переменных даже после того, как функция, создавшая замыкание, завершила работу.
Обычно замыкания используются, если нужно:
— Создать функцию с сохранением некоторого состояния между вызовами.
— Избежать использования глобальных переменных и повысить инкапсуляцию.
— Частично применить функцию без вызова (создание другой функции).
В Python замыкания реализуются элегантно и просто с помощью вложенных функций. Это мощный механизм, позволяющий писать короткий и чистый код.
Бесплатный вебинар Python: Как стать востребованным backend разработчиком.
⏰ Когда: 27 сентября в 19:00 мск
Что узнаете за 2 часа:
✔️Что нужно, чтобы найти первую работу разработчиком.
✔️Какие знания нужны для входа в профессию.
✔️Что нужно, чтобы найти первую работу разработчиком.
✔️Какому бизнесу нужны Python-разработчики и почему Python хорош именно для веб-разработки.
А еще вас ждет Q&A сессия и увлекательный квиз!
🎁 Всем, кто зарегистрировался - Гайд «Как заговорить на сленге IT-специалистов», а каждому участнику - Карта компетенций Python-разработчика.
Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid: LjN8KG5wv
Как управлять состоянием системы через события?
Event-driven архитектура — концепция программирования, которая позволяет создавать сложные приложения, используя событийно-ориентированный подход. Так создаются распределенные системы, которые легко масштабируются и обладают высокой отказоустойчивостью.
Начните изучать эту технологию на бесплатном открытом уроке «Архитектурный подход Event Driven Architecture» от OTUS: https://otus.pw/qLOP/
На занятии рассмотрим:
✔️ взаимодействие сервисов на основе событий;
✔️ плюсы и минусы такого подхода;
✔️ сочетания событийного и синхронного взаимодействия;
✔️ паттерны проектирования событий;
✔️ подход Event Sourcing и CQRS.
Урок пройдёт 27 сентября в 20:00 мск в рамках курса «Microservice Architecture».
👩💻 Пройдите вступительное тестирование прямо сейчас и зарегистрируйтесь на событие: https://otus.pw/qLOP/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8K1Hzp
Функции, поддерживающие только именованные аргументы (kwargs)
**kwargs (keyword arguments) — это способ передачи произвольного количества именованных аргументов в функцию.
В функциях после позиционных и обычных именованных аргументов указывают параметр **kwargs
.
В kwargs
передаются аргументы в виде ключ-значение. Внутри функции kwargs
становится словарем, где ключи — имена аргументов, значения — значения аргументов.
Благодаря этому через kwargs
можно передать любое количество дополнительных аргументов в функцию.
Если одновременно используются *args
и **kwargs
, то в вызове сначала указываются *args
.
#это_база
#вопросы_с_собеседований
Что такое фабрика декораторов?
Фабрика декораторов — это особая разновидность функции высшего порядка, которая возвращает декоратор вместо прямого результата. Главное отличие фабрики декораторов от обычного декоратора в том, что она принимает аргументы, которые могут конфигурировать логику декоратора.
Например, фабрика может принимать имя лог-файла, в который будет производиться запись при вызове декорируемой функции. Или уровень логирования вместо простой записи всех вызовов.
Такой подход позволяет создавать переиспользуемые и гибко настраиваемые декораторы для решения разных задач.
Главные преимущества фабрик декораторов — это возможность абстрагироваться от конкретики реализации, избежать дублирования кода и создавать интуитивный API для декораторов с настройками.
#вопросы_с_собеседований
Как Python ищет модули при импорте?
При импорте модулей интерпретатор следует определенному алгоритму поиска:
1. Сначала проверяются встроенные модули, которые поставляются в составе самого Python.
2. Затем по порядку просматриваются пути, перечисленные в sys.path — глобальной переменной, которая содержит список каталогов для поиска модулей.
По умолчанию в sys.path входят: текущий рабочий каталог скрипта, PYTHONPATH — каталоги указанные в этой переменной окружения, каталоги стандартной библиотеки Python.
3. Если модуль не найден — генерируется исключение ImportError.
Все для изучения Data Science
Собрали все что потребуется для изучения data science
👉 Логово Дата Сайнтиста | Machinelearning [ru] - канал для изучения data science и machinelearning
👉 Логово питониста | Python - канал для изучения python и его аспектов связанных с data science.
Добро пожаловать!
🔥 Мы в Yandex for Developers запускаем четыре новых канала для разработчиков
Теперь Yandex for — это целая семья телеграм-каналов по разным направлениям: фронтенд, бэкенд, мобильная разработка и ML.
В каждом из них мы будем рассказывать всё о жизни определённого комьюнити инженеров внутри Яндекса — начиная с анонсов всех стековых мероприятий и заканчивая техническими подборками от разработчиков, интервью с инженерами и полезной информацией по найму. А в этом большом телеграм-канале мы продолжим рассказывать про главные события Яндекса для разработчиков, уже не боясь немножечко поднадоесть вам.
Давайте обсуждать технологии, знакомиться и развивать сообщество инженеров:
➡️ Yandex for Mobile
➡️ Yandex for Frontend
➡️ Yandex for Backend
➡️ Yandex for ML
В общем, переходите на наши каналы — всё самое интересное только начинается!
Подписывайтесь 👉 @Yandex4Developers
Реклама. ООО "Яндекс". erid: 2VtzqvyJJuX
#вопросы_с_собеседований
Что такое сериализация?
Сериализация — это процесс преобразования объектов в поток байтов для сохранения или передачи.
Это позволяет сохранить состояние объекта в файл или базу данных и восстановить его позже.
Основные преимущества сериализации:
— Сохранение и восстановление объектов между сессиями программы.
— Передача объектов по сети между приложениями и машинами.
— Преобразование объектов в формат хранения, независимый от платформы.
Логические all и any
Встроенные функции all()
и any()
, которые применяются к последовательностям (спискам, кортежам и т. д.) и возвращают bool
значение.all(iterable)
— возвращает True
, если все элементы iterable
истинны (или iterable
пуст).any(iterable)
— возвращает True
, если хотя бы один элемент iterable
истинен.
Эти функции могут использоваться для проверки каких-либо условий на всём наборе данных.
Например, проверить, что все числа больше нуля, или что хотя бы одно число больше 10.
Важные моменты:
— Для пустых iterable all()
вернёт True
, а any()
— False
.
— Элемент считается ложным, если его bool()
равен False
.
— Функции останавливаются при первом ложном (для all
) или истинном (для any
) элементе.
#это_база