№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy
Функция multimode()
Функция multimode() модуля statistics возвращает список наиболее часто встречающихся значений элементов в последовательности data в том порядке, в котором они были обнаружены.
Аргумент data может быть последовательностью или итерацией.
Функция statistics.multimode() вернет более одного результата, если в последовательности есть несколько элементов с одинаковым максимальным числом повторений или пустой список, если данные data пусты.
Открытие веб-страницы
Выше приведен простой рецепт открытия веб-страниц из вашего терминала Python или кода.
Наибольший общий делитель
В стандартной математической библиотеке Python есть отличные методы, которые упрощают практически любые базовые математические вычисления. Например метод gcd(), выдающий наибольший общий делитель.
Транспонирование двумерного массива данных
Чтобы поменять местами строки и столбцы матрицы, созданной с помощью встроенных типов данных, воспользуйтесь функцией zip.
❓Хотите овладеть Spark на профессиональном уровне?
Приглашаем дата-инженеров 26 мая в 20:00 на открытый урок «Spark в Kubernetes».
На занятии мы рассмотрим особенности и варианты запуска Spark в Kubernetes.
🔊 Вебинар проведет Вадим Заигрин, Team Lead команд инженеров данных на разных проектах.
Продолжить освоение инструментов дата-инжиниринга вы сможете на онлайн-курсе «Spark Developer» от OTUS.
➡️ Ссылка для регистрации: https://otus.pw/tVUh/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Получение индекса максимального элемента в списке
Python не предоставляет процедуры для прямого получения индекса максимального или минимального элемента в списке или кортеже. К счастью, есть элегантный способ сделать это.
Если есть два или более элементов с максимальным значением, данный код возвращает индекс последнего.
Выключение компьютера
Давайте проверим, как мы можем выключить компьютер, используя всего одну строку кода. Для этого мы будем использовать модуль ОС. Это один из действительно важных модулей в Python со многими другими функциями.
Backend Talks от Яндекс 360
Смотрите записи докладов с митапа от Яндекс 360 для бэкенд-разработчиков, архитекторов и DevOps-инженеров.
На пути к 9999: Игорь Обручев, руководитель группы SRE, рассказал, какими принципами команда руководствуется при создании сервисов, как без паники чинят инциденты и как в этом помогают учения.
Эволюция проектирования общих решений в Яндекс 360: Евгений Ширанков, руководитель команды платформенных сервисов, рассказал про подходы и лайфхаки, которые помогли выдержать рост команды и оставаться в контексте создания общих решений, не переизобретая велосипеды.
Ценности и культура команды: Роман Акинфеев, руководитель бэкенд-разработки, рассказал, почему культура и ценности являются важнейшими активами команды, которые сложно создать и поддерживать, но легко потерять в период взрывного роста.
Больше материалов о технологиях в Яндекс 360
@yandex360team
#вопросы_с_собеседований
Приведите пример генератора словарей
Мы создаем словарь с буквами алфавита в качестве ключей и индексами в качестве значений.
Перевод списка строк в список чисел
1 вариант
Наиболее идиоматический и идеологически выверенный способ
2 вариант
Для любителей функционального стиля
Тут функция map применяет функцию int к каждому элементу объекта a, потом результат преобразовывается в список.
Такой вариант считается менее "питоничным", но тоже имеет право на существование (как минимум, во многих случаях запись через map получается более компактной, чем вариант через списочное выражение).
Сборка словаря
В примере показано, как сгруппировать два массива в один словарь. При этом работать можно с любыми типами данных.
Библиотека Progressbar
Эта библиотека делает именно то, о чём вы подумали — выводит прогрессбар.
Завершение программы
Функция exit
создана для удобства работы в интерактивном режиме, но не рекомендуется использовать её внутри скриптов.
По факту функция просто поднимает исключение SystemExit
, а при попытке вызова без скобок напишет подсказку о правильном способе выхода из интерпретатора.
Использовать sys.exit()
стоит, так как этот метод есть в стандартном модуле и всегда там доступен. А ещё это довольно явный и понятный способ завершения программы.
winsound
winsound – это модуль в Python, который используется для доступа к основному механизму воспроизведения звука операционной системы Windows.
В модуле winsound файл WAV можно воспроизвести с помощью всего нескольких строк кода (показано на картинке).
Модуль не поддерживает никаких форматов файлов, кроме WAV. Также позволяет пользователям подавать звуковой сигнал из динамиков, используя выражение winsound.Beep(частота, продолжительность). Например:import winsound
winsound.Beep( 1010, 110 )
Ищем ошибки с помощью assert
Инструкция assert
принимает логическое выражение и необязательное сообщение. Используется для проверки типов, значений аргумента и вывода функции, а ещё для отладки, поскольку останавливает программу в случае ошибки.
Если выполнить инструкцию assert
с логическим выражением, результат которого равен True
, то ничего не произойдет. Но в случае с False
будет сгенерировано исключение AssertionError
.
Однако не нужно пытаться обработать исключение AssertionError
блоком try-except
, так как assert
тогда теряет свой смысл.
В примере на картинке проверяется, является ли переданный аргумент числовым типом данных. Если не является, то будет вызвано исключение и выведено указанное сообщение.
Функция shorten()
Функция shorten() модуля textwrap усекает заданный текст, чтобы он поместился в заданную ширину width.
Сначала все пробелы заменяются одиночными пробелами. Если результат соответствует ширине, он возвращается. В противном случае с конца отбрасывается слова, чтобы оставшийся текст плюс заполнитель placeholder (по умолчанию [...]) поместились в указанную ширину width.
Принимаете платежи в криптовалюте?
Если нет — то ваш ежегодный объем недополученной выручки может составлять до 15% от оборота
Если да – вы продолжаете переплачить 1.5-3% на комиссиях
Мы помогаем компаниям принимать оплату в USDT с минимальными комиссиями без посредников.
CoinCrossPay — выгоднее, чем у конкурентов!
✅ Комиссия 0,02–0,09% — дешевле не бывает! – для любого бизнеса
✅ Крипта — напрямую вам. Без посредников. Полный контроль.
✅ Персональная платежная страница = больше продаж!
✅ Простая интеграция и поддержка 24/7
Кому подойдет?
E-commerce, SaaS, freelancers, и т.д
Подключите ❤️CoinCrossPay уже сегодня и увеличивайте продажи без лишних затрат!
Оставь заявку на сайте:
➡️ CoinCrossPay.space
Или напиши нам напрямую
(предварительно расскажи нам о продукте):
@CoinCross_manager
🔍Тестовое собеседование на Middle Python-разработчика в четверг
22 мая(в четверг) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Собес проведет Вадим Пуштаев, ex. head of backend в 💙, автор канала @pythonetc, архитектор в европейской компании
Как это будет:
📂 Вадим будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Вадим будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Вадиму
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2Vtzquzi5tx
Веб-парсинг
Вы встречаете много данных каждый день на нескольких сайтах. Подумайте, как было бы здорово, если бы вы могли легко получить доступ к этим данным. Python делает данный процесс еще проще благодаря своей удивительной поддержке и библиотекам. Данные в сети неструктурированы, и Python предоставляет простой способ для анализа и использования этих данных и даже для дальнейшего анализа и операций.
uuid
Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier, глобально уникальный идентификатор).
Так мы создаём случайное 128-битное число, которое почти наверняка будет уникальным.
Существует более 2¹²² возможных UUID. Это более 5 ундециллионов или 5,000,000,000,000,000,000,000,000,000,000,000,000.
Вероятность нахождения дубликатов в заданном наборе крайне мала. Даже при наличии триллиона UUID вероятность того, что среди них есть дубликат, гораздо меньше, чем один к миллиарду.
Вполне недурно для двух строк кода.
Вывод значения по умолчанию для отсутствующего ключа словаря
Обращение к несуществующему ключу словаря вызывает исключение. Избежать этого можно, вызывая метод get. В указанном случае метод выдает None (по умолчанию) или заданное значение аргумента.
Перегрузка операторов сравнения
В случае, если вам в коде необходимо сравнивать объекты какого-либо класса, требуется реализовать магические методы, которые вызываются при сравнении.
Например, под капотом записи a < b
вызывается a.__lt__(b)
. Для каждого оператора сравнения есть свой магический метод. Подробнее про то, какой метод за какой оператор отвечает, выше в коде.
Писать все шесть методов получается слегка громоздко, поэтому зачастую используют декоратор total_ordering
из functools
.
Рисуем звезду при помощи 🐢
Результат нашего кода находится в посте выше.turtle(черепаха)
— это библиотека Python, похожая на доску для рисования, которая позволяет нам приказать черепахе рисовать на ней! Мы можем использовать множество функций черепахи, которые могут перемещать черепаху.
Подробнее можно почитать здесь.
Изучите секреты самых популярных open source key-value СУБД – Redis и Valkey
В высоко-нагруженных сервисах Redis — не просто кэш, а важная подсистема, на которой строится значимая часть бизнес-логики. От его стабильности, масштабируемости и отказоустойчивости зависит производительность всего сервиса. Valkey - это современный производительный форк Redis с открытым исходным кодом, поддерживаемый сообществом и рядом крупных компаний. Valkey набирает популярность, поддержан крупными облачными провайдерами, и вполне возможно потеснит или вовсе заменит Redis со временем. Наш курс — для тех, кто хочет держать свой стэк и знания актуальными и глубоко разбираться, как устроен Redis и Valkey.
🌐 В программе курса:
🤩 Как эффективно использовать базовые и продвинутые структуры данных: HyperLogLog, Bitmaps и Bisields, Streams, Geospatial-индексы, Bloom Filters
🤩 Как проектировать in-memory системы, которые не разваливаются под нагрузкой, что влияет на отказоустойчивость и как её добиться
🤩 Как работает репликация и кластеризация на практике (режимы Sentinel и Cluster)
🤩 Как встроить Redis/Valkey в реальный прод с учётом безопасности, интеграций и современных практик мониторинга.
🥸 Кто мы: R&D-центр Devhands. Автор курса — Константин Ратвин — преподаватель МФТИ на кафедре БИТ (совместно со СберТех), эксперт по распределённым системам и банковским ИТ, автор курсов по СУБД и инфраструктуре, спикер HighLoad++ и PGConf.
🗓 Старт курса: 9 июня, 6 недель обучения.
Изучить программу и записаться можно здесь.
Ждем вас!
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqxNnFKA
#вопросы_с_собеседований
Запустится ли этот код на Python 3? Если да, то что он выведет?
sys.allow_boolean_assignment разрешает создавать переменные с именами, зарезервированными под идентификаторы типа bool. Поэтому этот код запустится и выведет "True is False".
Эта настройка введена в известном первоапрельском коммите, который до сих пор остался в коде интерпретатора. Если кандидат об этом знает, можно с уверенностью сказать, что он общается в должных профессиональных кругах и любят углубляться в детали.
❓Зачем Data Scientist изучать ML?
Машинное обучение — это не просто модное словосочетание. Это основа Data Science, без которой успешная карьера в этой области невозможна. Вы не сможете работать с большими данными и обучать ИИ, если не освоите методы ML.
На открытом вебинаре 19 мая в 18:00 мск вы узнаете, зачем вам ML, и научитесь решать реальную задачу: классифицировать изображения с помощью машинного обучения.
📣 Спикер Мария Тихонова – PhD Computer Science, Senior Data Scientist и преподаватель в одном из крупнейших университетов России.
➡️ Записывайтесь на открытый вебинар и получите скидку на большое обучение «Специализация Machine Learning»: https://otus.pw/7VzZ/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Как проверить начинается ли строка с определенного слова в Python?
Чтобы проверить, начинается ли строка со слова в Python, используйте regex для «starts with» ^ и само слово.
В этом руководстве мы будем использовать функцию rе.sеаrсh() для сопоставления выражения со строкой и выяснения, начинается ли строка с данного слова или нет.
В следующем примере мы проверим, начинается с определенного слова или нет.
Отправляем электронные письма
SMTP (Simple Mail Transfer Protocol) — это протокол, позволяющий отправлять электронные письма. В стандартной библиотеке есть пакет smtplib
, реализующий его поведение.
Для подключения к серверу будем использовать класс SMTP_SSL
, включающий в себя и шифрование. В качестве аргументов передадим ему адрес сервера и порт. Авторизация происходит с помощью метода login
, в который передаём логин и пароль.
Отправлять письма следует методом sendmail
, который принимает адреса отправителя и получателя, а также сам текст. В конце программы следует закрывать соединение с помощью метода quit()
.
Следует обратить внимание на то, что некоторые почтовые сервисы могут не разрешить так сразу подключаться к их серверам и производить операции. В этом случае пришлось немного повоевать с Gmail.
Отправляем универсальные уведомления
В Python присутствует интересный пакет notifiers, который позволяет отправлять уведомления на почту, через Телеграм бота, в Слэк и еще много куда. Всего доступно 16 провайдеров, подробнее про них в документации.
В функцию get_notifier передаем название провайдера в виде строки и получаем объект, с которым можно работать. Отправить уведомление можно с помощью универсального метода notify.
Если не уверены, какие аргументы нужно передать для отправки уведомления, то можете посмотреть их через атрибут required у созданного объекта.
Например, для Телеграма нужно передать токен бота, айди чата и само сообщение. В случае с почтой необходимо указать логин, пароль, адресата и также сообщение.
Временные файлы
В стандартной библиотеке Python имеется модуль tempfile
, содержащий классы и методы для работы со временными файлами и директориями. Такие файлы нужны для сохранения промежуточных результатов выполнения программы.
Функция TemporaryFile
создает временный файл в системной директории и возвращает файлоподобный объект.
Созданный временный файл будет автоматически удален по закрытию файла или при выходе из контекстного менеджера, а другие процессы и приложения не смогут получить доступ к этому временному файлу.