Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL
Вопросы от новичков
Zen of Python поддерживает новоприбывших в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросыновичков
@zen_of_python
Самописный транскрибатор конференций
В 2024 модно стало не слушать все на созвонах, а экстрактить самое важное ИИ-инструментами вроде tl;dv. На официальном YouTube-канале компании AssemblyAI (специализируются на text-to-speech, speech-to-text) опубликовали 12-минутный туториал. Пройдя те же шаги, всего за 28 строк кода ̶в̶ы̶с̶т̶а̶в̶и̶т̶ь̶ ̶в̶и̶д̶е̶о̶з̶а̶с̶т̶а̶в̶к̶у̶ ̶с̶ ̶с̶о̶б̶о̶й̶ ̶и̶ ̶н̶е̶ ̶х̶о̶д̶и̶т̶ь̶ ̶н̶а̶ ̶м̶и̶т̶а̶п̶ы̶ ̶б̶о̶л̶ь̶ш̶е̶ ̶н̶и̶к̶о̶г̶д̶а̶ транскрибировать Zoom-конфу, или любую другую.
🌭 — надоели созвоны, только «фокусное» время отнимают
🏆 — я гуру созвонов, никогда не надоест
🌚 — другое (напишите в комментариях)
#библиотека
@zen_of_python
Вопрос от подписчика
Задаёт @EpicBacker:
«Подскажите пожалуйста, а как использовать API чатаGPT через питон, и как получить ключ API.»
От админа: в своё время пробовали ChatGPT API по мотивам вот этой статьи (вам потребуется VPN).
#обсуждение
@zen_of_python
Яндекс приглашает на Young Con — первый фестиваль о карьере в IT и современных технологиях
— 6000 участников.
— 10+ часов приключений и нетворкинга.
— 30 топ-менеджеров Яндекса, которые поделятся личным опытом и расскажут про возможности, которые дает работа в крупной IT-компании.
— Секреты технологий.
— И не только!
Прямо во время ивента начинающие разработчики смогут пройти экспресс-собеседование, чтобы затем попасть на стажировку в компанию. Это хороший шанс построить карьеру в Яндексе, ведь более половины стажёров, по статистике, затем получают оффер.
Гостей Young Con ждёт ещё одно событие: финал «Баттла вузов» — турнира по программированию среди студентов с призовым фондом 1 млн рублей. Выигрыш участники команды-победителя разделят между собой. Завершится фестиваль выступлением хедлайнеров The Hatters и ХЛЕБ.
Young Con пройдёт 27 июня на Live Arena в онлайн- и офлайн-формате.
Зарегистрироваться и узнать подробности можно здесь.
Это #партнёрский пост
socket | Пусть ОС сама выбирает порт
Если вы пишете веб-приложения, то наверняка хотя бы раз сталкивались с «портовой путаницей» (стандартный 8000 занят, значит, выбираем 4040, а потом будь что будет). В немаленьком англоязычном лонгриде Кристоф Шисль разбирается, как упростить себе эту задачу с помощью библиотеки socket и псевдорандомизации.
#библиотека
@zen_of_python
portr — аналог ngrok для команды
Это решение позволяет создавать локальные соединения http / tcp / websocket. Дружит с Cloudflare по части SSL-сертификатов, даёт грамотно инспектировать. На видео консоль администратора, позволяющая шерить проект с коллегами.
Проект на GitHub
#инструмент
@zen_of_python
PkgInspect: улучшенный менеджмент зависимостей
Если вас тоже достало, что не все версии инструментов чекаются флагом --version
, и в то же время вы готовы разом обновить все до последней версии, эта утилита для вас. Автор заявляет, что модули:
— PkgInspect отдаёт информацию о версиях зависимостей;
— PkgVersions сравнивает версии разных виртуальных сред и даёт массово обновляться;
— PkgMetrics отдаёт стату os про тот или иной инструмент.
Проект на GitHub
@zen_of_python
Вопрос от подписчика
Задает @deigumnov:
"Есть ли пример кода, который взаимодействует с апач кафкой - может послать сообщение, вычитать что есть сейчас, посмотреть сколько в очереди и т.п."
! Пожалуйста, будьте взаимовежливы. Всем нам нужно место, где окажут помощь.
@zen_of_python
Вопрос от подписчика
Задает @Scotch_flip:
"Здравствуйте, у меня такой вопрос:
с помощью tkinter создал окно с кнопками от 1 и до 25, хочу сделать при нажатии кнопки с command меня[ть] цвет рандомно выбранных чисел или же по очереди меня[ть] цвет каждой кнопки , пробовал много разных способов, но увы".
! Пожалуйста, будьте взаимовежливы. Всем нам нужно место, где окажут помощь.
@zen_of_python
Сложность структур данных и алгоритмов
Если вы подступились к объёмным данным в проекте, самое время задуматься: а те ли методы и функции вы используете? Какова будет скорость интерпретации и не «повесится» ли программа вообще?
На pythonmorsels.com опубликовали англоязычную статью на 9 минут про виды сложностей (они на графике ниже), и про сравнение встроенных методов списков, очередей (queue), словарей, сетов, класса-счётчика (Counter), кучи и других структур. Самое оно, чтобы аккуратно вьехать в стадию оптимизации своего кода.
Если вам нужно сначала разобраться с понятием Time Complexity, вот доступная статья от основателя Типичного программиста.
#лучшиепрактики
@zen_of_python
Инженер-программист, помни!
Если ты всей душой в майских праздниках, то эксперименты с «пивным» пиком Балмера никто не отменял.
«Каким-то образом Балмер посчитал, что 1,29–1,38‰ алкоголя в крови открывают у него сверхчеловеческие способности к программированию: он выпивал пару литров пива, входил в состояние лёгкого опьянения и мог продуктивно кодить».
Ну если сверхкода в таком состоянии все же не написать, то за «жабистые» таски точно легче браться.
#кек
@zen_of_python
Поздравляем победителей
Задачу об инверсии строки верно решили:
— Cool and Fun Python (@Python3k);
— Лев Выскубов;
— @sidor0912;
— @lomserman;
— @HackingSection;
— @VasilTerekin (засчитываю, хотя запрошена функция);
— @patriarch_chesslovo;
— @IvanImmortal;
— @Sentiago.
Кратчайшие верные решения предложили @patriarch_chesslovo:VOWELS_LOWERCASE = set('aeoiuаоыуэя
ё
июе')
def invert_vowels(strng):
reversed_vowels = (i for i in strng[::-1] if i.lower() in VOWELS_LOWERCASE)
return ''.join([i if i.lower() not in VOWELS_LOWERCASE else next(reversed_vowels) for i in strng])
и @HackingSection:def invert_vowels(s, vowels = "аяо
ё
иыуюеэ"):
vowelsInText = [j for j in s if j in vowels]
return [vowelsInText.pop(-1) if i in vowels else i for i in s]
Отдельный респект Cool and Fun Python за разбор своего решения:Предполагается, что все буквы в тексте строчные и русские. Иначе требуется доработать строку гласных.
У решения линейная асимптотика. Но если очень хочется, можно повысить быстродействие, превратив vowels в множество строк односимвольников: vowels = {'а', 'я', ...}
И преобразование строки в список и обратно - вынужденная мера. Строка в Python неизменяемая. Впрочем, на сохранение асимптотики O(N) это не влияет.
Кстати, если бы постановщик задачи гарантировал наличие гласных (вс
ё
же предлоги "в", "с" тоже считаются словами), можно было бы убрать проверки left < right в двух внутренних циклах.
Отдельная благодарность @lomserman за создание тестирующей функции:def test(original: str, expected: str):
result = invert_vowels(original)
print(result)
assert result == expected
p.s. Админ подписывается на всех ребятушек, что решают задачи. Если «провалиться» в профили решивших, там полно питонической годноты.
#задача
@zen_of_python
Задача о подстроке
Получаем две строки s
и t
. Напишите функцию проверки: является ли s подстрокой t.
Подстрока формируется из исходной строки путём удаления некоторых символов (может быть, ни одного) без нарушения положения остальных. "ace"
является подстрокой "abcde"
, а "aec"
— нет.
Ограничения:
0 <= len(s) <= 100
0 <= len(t) <= 10^4
s
и t
состоят только из строчных английских букв.
s = "abc"
t = "ahbgdc"
>>> is_substring(s, t)
... true
🌚 — все равно перепишу, ад зависимостей — потомкам
🕊️— готов к такому
🗿— bash'ем не занимаюсь
python-graph-gallery.com | Коллекция почти всех типов графиков с кодом для Matplotlib, Plotly etc.
Возможно, вы попадали на этот сайт, когда только осваивали EDA датасетов. На python-graph-gallery.com собрана шикарная коллекция популярных видов dataviz с полноценными сниппетами для рендеринга таковых.
#лучшиепрактики
@zen_of_python
Что нового в Python 3.13
Весьма богатый на обновления релиз:
— Улучшения интерпретатора и текстов ошибок;
— поддержка цвета в интерактивном интерпретаторе и выводе doctest;
— добавлен JIT-компилятор;
— TypeVar, ParamSpec теперь поддерживают значения по умолчанию и многое другое.
Полный What's New
Скачать Python 3.13.0a1
#факты
@zen_of_python
Всё о безопасной разработке расскажут на PHDays Fest 2 в Лужниках 23–26 мая
Positive Technologies вместе с сообществом POSIdev подготовили несколько секций с докладами для разработчиков:
— General development,
— Development Security,
— Platform Engineering,
— Data Engineering,
— Team Lead,
— Python совместно с сообществом Moscow Python,
— Dev tools, languages & frameworks.
Спикеры из Samokat, Тинькофф, СберМаркет, Yandex Cloud, Kaspersky, Lamoda Tech, Aвито, Positive Technologies и других компаний расскажут про архитектуру распределённых систем, безопасную разработку приложений, алгоритмы, языки и инструменты разработки, управление командой и не только.
В перерывах можно будет поиграть в IT-крокодила, решить безопасный кроссворд, выиграть полезную книгу или просто отдохнуть в лаунж-зоне. А в субботу, 25 мая, поучаствовать в воркшопах экспертов из Positive Technologies, Yandex Cloud и Hilbert Team, Wildberries или в олимпиаде по программированию.
Программа
Регистрация
Это #партнёрский пост
Водяной знак на Matplotlib-графике
Лаконичная англоязычная статья о методе, позволяющем защитить свои графики от воровства.
#факты
@zen_of_python
bytewax для процессинга Kafka и подобных
Фреймворк объединяет обработку потоков и событий Flink, Spark и Kafka Streams и других аналогичных решений.
Можно подключать источники данных, выполнять преобразования и записывать с помощью встроенных коннекторов или существующих Py-библиотек.
Проект на GitHub
#фреймворк
@zen_of_python
Поздравляем победителей
Задачу о подстроке верно решили:
— @GeorKu;
— @StSav012;
— @IPyth0n (@X_Python);
— @stalker1337;
— @HackingSection;
— @Shihiyev;
— @sidor0912
— @patriarch_chesslovoю
Кратчайшие верные решения предложили @HackingSection:def is_substring(s, t, nxt = 0):
return len(s) == [nxt := nxt + 1 for i in t if i == s[nxt]][-1]
и @SmirnGreg:def is_substring(s: str, t: str):
return bool(re.match('.*' + '.*'.join(s) + '.*', t))
Отдельное спасибо @SmirnGreg за замер скорости исполнения функций (!)
NB! Учитывайте повторяющиеся буквы в подстроке s. Для некоторых решений следующая пара строк отдаёт True, что явно неверно:s = "agggc"
t = "cgxggxxgxxa"
Присоединяйтесь: раз в неделю задачу решить — это вполне оптимальная нагрузка для занятого кодера.
#задача
@zen_of_python
Задача о клумбе
У вас есть длинная клумба, на которой часть слотов занята, часть нет. Цветы нельзя сажать на соседних слотах. Вам подаётся список целочисленных значений, где 0
– пустой, а 1
— занятый слот.
Создайте функцию is_fitting()
, которая возвращает true, если на клумбе можно посадить n
новых цветов по правилу свободных соседних слотов.
Для теста:
flowerbed = [1,0,0,0,1]
>>> is_fitting(flowerbed, 1)
... true
>>> is_fitting(flowerbed, 2)
... false
Конференция Pytup
1 июня Яндекс проведёт в Нижнем Новгороде бесплатную конференцию (можно смотреть онлайн) о свежем в мире Python. Среди докладчиков замечены кодеры из VK, Lamoda, МТС и Авито:
Среди докладов интересные (по мнению админа):
— RAG на DataSphere;
— Unbiased Review of Environment Management and Packaging Systems;
— Зачем нужен GIL и как от него избавиться.
Посадочная конференции
#события
@zen_of_python
Вопросы от новичков
Zen of Python поддерживает новоприбывших в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросыновичков
@zen_of_python
Как в одно слово назвать Django-разработчика?
🏆— Джангист
🦄 — Джангер
👀 — Джангэстро
🌚 — Свое (поделитесь в комментариях)
tkforge: из Figma в Tkinter
Интересная коллекция компонентов, позволяющая сверстать на канвасе небезызвестной Figma интерфейс, а потом командной строкой перегнать это сразу в Python-код для Tkinter.
#библиотека
@zen_of_python
Фейковые техинтервью и трояны
Если верить статье с xakep.ru, группа корейских IT-компаний приглашает на собеседование на должность фулстэк-разработчика, и под эгидой демонстрации навыков просят клонировать и использовать репозиторий Dev Popper — якобы NPM-расширение.
На деле же при запуске активируется обфусцированный js-скрипт, который в итоге запускает py-скрипт (!) — троян, собирающий:
— данные для входа на ваши сервера;
— историю CLI-команд (ищет креды, опять же);
— возможности для дистанционного развёртывания вредоносного ПО.
Коллеги, с корейскими компаниями пока на собеседования не ходим.
#факты
@zen_of_python
OpenTelemetry: здоровье вашего py-приложения
Доступный англоязычный гайд по настройке телеметрии вашего проекта. Инструмент позволяет:
— собирать логи;
— отслеживать исполнение запросов;
— прослеживать путь конкретного тестового запроса (чтобы найти «бутылочные горлышки»);
— отправлять уведомления о событиях в мессенджер;
— распределенно отслеживать в условиях нескольких микросервисов и проч.
#лучшиепрактики
@zen_of_python
Как сжимают zlib + 3 конкурента
Реддитор провёл бенчмарк четырёх архивирующих библиотек — zlib, lz4, brotli, zstandard на коэффициент сжатия, скорость компрессии / декомпрессии.
Вот результат по первому показателю:| Библиотека | Сжатие, разы |
|------------|--------------|
| zlib | 27.84 |
| lz4 | 18.23 |
| brotli | 64.78 |
| zstandard | 43.42 |
Остальные «пьедесталы» плюс данные о дизайне экспериментов в треде. Сжимали .json.
#факты
@zen_of_python
Бесплатная книга о Py-регулярках
Разработчики Christian Mayer, Zohaib Riaz и Lukas Rieger написали книгу, упрощающую изучение регулярных выражений в рамках Python.
Если кому удобнее учиться по видео, вот видеокурс, аналогичный книге.
#книга
@zen_of_python