Стартовала Квалификация на седьмой международный чемпионат Yandex Cup 2024. В этом году участники погрузятся в древние эпохи, чтобы решить задачи цивилизаций прошлого с помощью IT.
Всего шесть направлений: фронтенд, бэкенд, мобильная разработка, ML, аналитика и алгоритмы. Последнее открыто для участников со всего мира, а аналитика доступна также для юниоров от 14 лет. Призовой фонд чемпионата — 12,5 млн рублей. Квалификация продлится до 20 октября, полуфинал — 2 ноября, а финал пройдет в Ташкенте в декабре.
На картинках — примеры ситуаций, с которыми предстоит справиться в рамках отборочных этапов: настроить систему разгрузки драккаров в скандинавском порту викингов, помочь композитору в создании алгоритма для написания музыки или придумать систему архивации бамбуковых табличек астрономов династии Хань.
Победители также получат возможность пройти упрощенное собеседование в Яндекс! Регистрируемся тут.
Всего шесть направлений: фронтенд, бэкенд, мобильная разработка, ML, аналитика и алгоритмы. Последнее открыто для участников со всего мира, а аналитика доступна также для юниоров от 14 лет. Призовой фонд чемпионата — 12,5 млн рублей. Квалификация продлится до 20 октября, полуфинал — 2 ноября, а финал пройдет в Ташкенте в декабре.
На картинках — примеры ситуаций, с которыми предстоит справиться в рамках отборочных этапов: настроить систему разгрузки драккаров в скандинавском порту викингов, помочь композитору в создании алгоритма для написания музыки или придумать систему архивации бамбуковых табличек астрономов династии Хань.
Победители также получат возможность пройти упрощенное собеседование в Яндекс! Регистрируемся тут.
Операции с zip архивами
Для работы с
Просмотреть содержимое архива можно с помощью функции
Также этот модуль позволяет создавать свои
#zipfile
Для работы с
zip
файлами можно использовать встроенный модуль zipfile
. Если кто не помнит, то zip
файл — это архив, содержащий сжатые файлы. Просмотреть содержимое архива можно с помощью функции
printdir
, а извлечь все файлы можно вызвав extractfile
. Также этот модуль позволяет создавать свои
zip
архивы, но мы решили не усложнять пример, поэтому просто прикладываем ссылку на документацию. #zipfile
Получаем и задаем лимит рекурсии
В Python не оптимизируется хвостовая рекурсия, из-за чего зачастую возникает
Но с помощью модуля
И вообще лучше стараться использовать не рекурсию, а обычные циклы, но это вы и так сами знаете.
#рекурсия #лимиты
В Python не оптимизируется хвостовая рекурсия, из-за чего зачастую возникает
RecursionError
во время создания рекурсивных алгоритмов. Но с помощью модуля
sys
можно посмотреть и даже изменить максимальную глубину рекурсии. Хотя делать это слегка опасно, так как каждый новый вызов занимает много памяти. И вообще лучше стараться использовать не рекурсию, а обычные циклы, но это вы и так сами знаете.
#рекурсия #лимиты
Тестирование на pytest
При разработке на
Также он поддерживает запуск тестов на
pytest
— ближе по духу к Python нежели unittest
, который накладывает определенные обязательства при разработке тестов. Например, создание классов-наследников от TestCase или выполнение определенной процедуры запуска тестов. При разработке на
pytest
ничего этого делать не нужно. Вы просто пишете функции, которые должны начинаться с "test_" и используете assert, встроенные в Python. Также он поддерживает запуск тестов на
unittest
и nose
, то есть полная обратная совместимость с ними.Нейросетевая модель Сбера GigaChat обрела новую модальность
Сервис научился обрабатывать изображения и получать из них необходимую информацию. Искусственный интеллект распознает печатный текст, таблицы и формулы. Пользователю нужно лишь загрузить свою картинку и объяснить задачу: сделать описание содержимого или придумать подпись.
Эта фича особенно актуальна для бизнеса, ведь появится ещё больше сценариев применения искусственного интеллекта. Например, компании смогут модерировать и классифицировать отзывы, автоматизировать линию поддержки и многое другое.
Есть и второй важный апдейт: объём запроса увеличился в четыре раза — с 8 до 32 тысяч токенов. Раньше действовало ограничение, равное 12 страницам А4. Теперь же лимит расширили до 48 страниц, что позволит поддерживать более длинные диалоги.
Обновлённый GigaChat уже доступен бесплатно в веб-версии и Telegram-боте.
Сервис научился обрабатывать изображения и получать из них необходимую информацию. Искусственный интеллект распознает печатный текст, таблицы и формулы. Пользователю нужно лишь загрузить свою картинку и объяснить задачу: сделать описание содержимого или придумать подпись.
Эта фича особенно актуальна для бизнеса, ведь появится ещё больше сценариев применения искусственного интеллекта. Например, компании смогут модерировать и классифицировать отзывы, автоматизировать линию поддержки и многое другое.
Есть и второй важный апдейт: объём запроса увеличился в четыре раза — с 8 до 32 тысяч токенов. Раньше действовало ограничение, равное 12 страницам А4. Теперь же лимит расширили до 48 страниц, что позволит поддерживать более длинные диалоги.
Обновлённый GigaChat уже доступен бесплатно в веб-версии и Telegram-боте.
Красивые таблицы в терминале
PrettyTable – это простая библиотека, предназначенная для быстрого и легкого представления табличных данных в виде ASCII. Модуль можно установить привычным способом через
Для создания таблиц и работы с ними используется класс
Более того, модуль
#таблицы #prettytable
PrettyTable – это простая библиотека, предназначенная для быстрого и легкого представления табличных данных в виде ASCII. Модуль можно установить привычным способом через
pip
.Для создания таблиц и работы с ними используется класс
PrettyTable
из этого модуля. Задать название для столбцов можно с помощью атрибута fields_name
. Строки в таблицу добавляются путем вызова метода add_row
.Более того, модуль
prettytable
позволяет регулировать различные параметры, сортировать данные, работать с html
, а также взаимодействовать с csv
и sql
таблицами. Так что возможностей у этого модуля предостаточно.#таблицы #prettytable
Форматируемые шаблоны строк
Модуль
Такой способ появился ещё в Python 2.4, как замена %-форматированию (PEP 292), но популярным так и не стал. Поддерживает передачу значений по имени и использует $-синтаксис как в PHP.
В новых проектах, конечно, используются чаще всего f-строки и иногда метод
#строки
Модуль
string
из стандартной библиотеки содержит интересный класс Template
, который позволяет вполне удобно создавать шаблоны строк для дальнейшего форматирования.Такой способ появился ещё в Python 2.4, как замена %-форматированию (PEP 292), но популярным так и не стал. Поддерживает передачу значений по имени и использует $-синтаксис как в PHP.
В новых проектах, конечно, используются чаще всего f-строки и иногда метод
format
, но всё же о Template
стоит хотя бы знать на случай, если придется работать с легаси кодом.#строки
Находим опечатки в тексте
Полезный пакет
Под капотом модуль использует алгоритм расстояния Левенштейна. А сам код основан на статье, написанной в блоге Питера Норвига. Короче, реализация интересная, советую поизучать.
Но даже если не вникать в подробности, то пакет использовать крайне легко. Примеры использования класса
Пакет поддерживает 6 языков, включая русский. Но за подробностями отправляю вас читать документацию.
#spellchecker
Полезный пакет
spellchecker
позволяет находить опечатки в тексте и даже дает возможные варианты исправлений. Под капотом модуль использует алгоритм расстояния Левенштейна. А сам код основан на статье, написанной в блоге Питера Норвига. Короче, реализация интересная, советую поизучать.
Но даже если не вникать в подробности, то пакет использовать крайне легко. Примеры использования класса
SpellChecker
и его методов correction
и candidates
показаны на картинке. Пакет поддерживает 6 языков, включая русский. Но за подробностями отправляю вас читать документацию.
#spellchecker
Удобная работа с файловыми путями
В стандартной библиотеке есть максимально удобный пакет
Для представления пути к файлу есть класс
Но самой классной фичей является замена
Таким образом, пакет
#pathlib
В стандартной библиотеке есть максимально удобный пакет
pathlib
, позволяющий осуществлять различную работу с файловыми путями. Для представления пути к файлу есть класс
Path
, с объектами которого уже можно производить операции. Например, методы exists()
и is_dir()
проверяют, существует ли файл и является ли он директорией. Но самой классной фичей является замена
os.path.join()
на более удобный и элегантный вариант с использованием слэшей, как показано на картинке. Таким образом, пакет
pathlib
может стать частичной заменой os
в некоторых случаях при работе с файловыми путями. #pathlib
Разделители для целых чисел
Трудно визуально различить целые числа подобные
Но Python позволяет использовать нижнее подчеркивание как разделитель для улучшения читабельности.
Например,
#числа
Трудно визуально различить целые числа подобные
10000000
и 100000000
. Использовать запятые, как в английском языке, не получится.Но Python позволяет использовать нижнее подчеркивание как разделитель для улучшения читабельности.
Например,
1_000_000
будет интерпретироваться как целое число 1000000
.#числа
Порядок разрешения методов
В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов в классе. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.
Этот порядок можно получить при помощи атрибута
Отсюда становится понятно, что артибут первее будет найден именно в классе B и равен он будет значению 1.
#классы
В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов в классе. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.
Этот порядок можно получить при помощи атрибута
__mro__
. Он говорит о том, что если мы в примере выше попробуем обратиться к атрибуту value
, Python будет искать сначала в классе A
, далее в B
, затем в C
и в самом конце в object
. Отсюда становится понятно, что артибут первее будет найден именно в классе B и равен он будет значению 1.
#классы
Создаем контекстный менеджер с помощью декоратора
Обычно протокол управления контекстом реализовывают с помощью класса и двух магических методов:
Так вот, помимо написания своего класса, есть еще один способ создать контекстный менеджер — использовать декоратор
Первая часть функции
#contextlib
Обычно протокол управления контекстом реализовывают с помощью класса и двух магических методов:
__enter__
и __exit__
. Но такой подход может показаться слегка сложным.Так вот, помимо написания своего класса, есть еще один способ создать контекстный менеджер — использовать декоратор
@contextmanager
из встроенного пакета contextlib
.Первая часть функции
tag
, которая идёт до yield
, выполняется при входе в блок with
. Затем исполняется сам этот блок, а после этого завершается оставшаяся часть, которая идет после yield
.#contextlib
Прогресс выполнения программы
Индикаторы прогресса добавляют наглядности в скриптах, которые исполняют какие-то функции, требующие времени для выполнения. Модуль
Привычный
Кстати, интересный факт – название
#модули #tqdm
Индикаторы прогресса добавляют наглядности в скриптах, которые исполняют какие-то функции, требующие времени для выполнения. Модуль
tqdm
является простым и лаконичным вариантом.Привычный
range
можно заменить на trange
для визуализации прогресса. А для итерации по какой-либо последовательности, достаточно просто передать её в функцию tqdm
. Также модуль хорошо себя зарекомендовал и в Jupyter Notebook.Кстати, интересный факт – название
tqdm
произошло от арабского слова "taqaddum" (تقدّم), которое означает "прогресс," а также это ещё и сокращение от "я тебя сильно люблю" на испанском (te quiero demasiado).#модули #tqdm
Получаем календарь
В модуле
Если строки строки не устраивают, то в модуле есть много методов для получения самых разных итераторов. А еще там можно даже получить календарь в виде HTML.
Кстати, модуль является встроенным, отдельно его устанавливать не нужно.
#calendar
В модуле
calendar
есть функция month()
, которая вернет календарь указанного месяца в виде строки, как показано в примере. А функция calendar()
выдаст целый год.Если строки строки не устраивают, то в модуле есть много методов для получения самых разных итераторов. А еще там можно даже получить календарь в виде HTML.
Кстати, модуль является встроенным, отдельно его устанавливать не нужно.
#calendar
Ruff
Основным преимуществом
#python #ruff
Ruff
— Чрезвычайно быстрый линтер и форматер кода на Python
, написанный на Rust
.Основным преимуществом
Ruff
является его скорость. Ruff
в 10-100 раз быстрее аналогов. В сравнении с flake8
, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (flake8-bugbear
и т.д.). Также Ruff
совместим с Black
«из коробки».Ruff
может форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична isort
.#python #ruff
Используйте dict.get() вместо dict[]
Есть несколько способов получения значений из словарей, и даже по такой теме разработчики часто спорят.
Многие получают значения по ключам через квадратные скобки, но если такого ключа нет, то будет вызвано исключение.
Поэтому мы считаем, что лучше использовать метод
Таким образом, если значение по ключу не найдено, то вернется дефолтное значение.
В итоге, мы убираем возможные ошибки в случае, если нужных ключей в словаре нет.
#python #dict
Есть несколько способов получения значений из словарей, и даже по такой теме разработчики часто спорят.
Многие получают значения по ключам через квадратные скобки, но если такого ключа нет, то будет вызвано исключение.
Поэтому мы считаем, что лучше использовать метод
get
у словарей. Его основной плюс заключается в том, что он принимает опциональный аргумент, отвечающий за значение по умолчанию. Таким образом, если значение по ключу не найдено, то вернется дефолтное значение.
В итоге, мы убираем возможные ошибки в случае, если нужных ключей в словаре нет.
#python #dict
В Центральном университете начался набор на программу бакалавриата 2025 года.
Для будущих студентов вуза стартовал конкурс на получение грантов. Ими можно будет оплатить до 100% обучения. Принять участие могут старшеклассники и учащиеся старших курсов колледжей. Проходить конкурс будет ежемесячно до августа 2025 года.
Конкурс проводится в онлайн и офлайн-форматах и состоит из двух этапов. Базовые знания математики, логики и аналитического мышления проверяются онлайн, а в бизнес-игре оцениваются гибкие навыки, в том числе мотивация, коммуникативные и лидерские качества.
В рамках набора абитуриенты поучаствуют в собственных мероприятиях Центрального университета - ИТ-буткемпах и хакатонах, где смогут проявить полученные знания и навыки. Для лучшего понимания возможного карьерного пути состоятся экскурсии в офисы ведущих высокотехнологичных компаний России, например, Т-Банк, VK и Авито.
Для будущих студентов вуза стартовал конкурс на получение грантов. Ими можно будет оплатить до 100% обучения. Принять участие могут старшеклассники и учащиеся старших курсов колледжей. Проходить конкурс будет ежемесячно до августа 2025 года.
Конкурс проводится в онлайн и офлайн-форматах и состоит из двух этапов. Базовые знания математики, логики и аналитического мышления проверяются онлайн, а в бизнес-игре оцениваются гибкие навыки, в том числе мотивация, коммуникативные и лидерские качества.
В рамках набора абитуриенты поучаствуют в собственных мероприятиях Центрального университета - ИТ-буткемпах и хакатонах, где смогут проявить полученные знания и навыки. Для лучшего понимания возможного карьерного пути состоятся экскурсии в офисы ведущих высокотехнологичных компаний России, например, Т-Банк, VK и Авито.
Разница между == и is
Многие разработчики не понимают разницу этих двух операторов сравнения. Из-за неправильного использования
Оператор
Но Python в целях производительности кеширует малые числа и короткие строки, поэтому возможны некоторые казусы, как в примере выше.
#тонкости
Многие разработчики не понимают разницу этих двух операторов сравнения. Из-за неправильного использования
==
и is
в приложениях могут возникнуть странные ошибки.Оператор
==
проверяет равенство значений двух объектов. А оператор is
проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти.Но Python в целях производительности кеширует малые числа и короткие строки, поэтому возможны некоторые казусы, как в примере выше.
#тонкости