Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL
Если вы когда-нибудь пытались парсить сайты привычными bs4 + selenium, то наверняка заметили, что «плавающей» капчей уже не ограничиваются: антибот-защита теперь учитывает поведение пользователей и браузерные отпечатки. В некоторых случаях стандартными библиотеками уже не обойтись.
Команда из Octo Browser рассказывает, как устроена такая защита сайта и что нужно для ее обхода: ведь не все роботы вредные.
#факты
Это #партнёрский пост
scrapegraphai | LLM-скрейпер
Это библиотека Python для очистки веб-страниц, которая использует LLM и логику прямого графа для создания конвейеров очистки веб-сайтов и локальных документов (XML, HTML, JSON и т.д.). Просто скажите, какую информацию вы хотите извлечь, и библиотека сделает это за вас.
Репозиторий проекта
#llm
@neuro_channel
Задача про поворот изображения
На вход подаётся двоичная матрица n x n из нулей и единиц. Наша задача — перевернуть изображение по горизонтали, затем инвертировать его значения.
— Переворот [1,1,0] по горизонтали приводит к [0,1,1].
— Инвертирование изображения означает, что каждый 0 заменяется 1, а каждая 1 заменяется 0.
>>> image = [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
>>> flip(image)
... [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
tab-pal | кастомные палитры в Tableau
Автоматически ищет конфиги Preferences.tsp, запоминает путь до конфигов в рамках виртуального окружения.
Репозиторий проекта
#библиотека
@zen_of_python
Зачем в проекте папка __pycache__?
Как только проект становится сложне, мы часто выносим часть функционала в отдельные модули или пакеты. Именно тогда из ниоткуда появляется __pycache__, причём в случайных местах:project/
│
├── mathematics/
│ │
│ ├── __pycache__/
│ │
│ ├── arithmetic/
│ │ ├── __init__.py
│ │ ├── add.py
│ │ └── sub.py
│ │
│ ├── geometry/
│ │ │
│ │ ├── __pycache__/
│ │ │
│ │ ├── __init__.py
│ │ └── shapes.py
│ │
│ └── __init__.py
│
└── calculator.py
Разбираемся, что это за директория, зачем Python свой кэш и почему он нужен на многих «этажах» проекта.
#факты
@zen_of_python
Тест на знание CRUD
Короткий квиз на 6 вопросов с небезызвестного realpython.com про операции create / read / update / delete. Перед прохождением можно освежить материал с помощью статьи.
#тест
@zen_of_python
Поздравляем победителей
Задачу про комбинирование строк верно решили:
— @beibarysm;
— Лев Выскубов;
— @impreza555;
— @sidor0912;
— @vsugoyak
Кратчайшие верные решения предложили Лев Выскубов:def merge(str1, str2):
return ''.join(sorted(set(list(str1) + list(str2))))
и @impreza555:def merge(str1: str, str2: str) -> str:
return "".join(sorted(set(str1) | set(str2)))
#задача
@zen_of_python
bridge | Ускоренный деплой Django-инфраструктуры
Утилита может мгновенно развернуть:
— БД на PostgreSQL;
— Redis (систему управления базами);
— Celery (для задач в фоновом режиме).
Также поддерживается быстрый деплой на render.com.
Репозиторий проекта
#библиотека
@zen_of_python
Google уволил целую команду Python-разработчиков
Нет, руководство не считает, что кодеров можно заменить ИИ, просто затраты для нового коллектива из Мюнхена ниже.
#факты
@zen_of_python
Вопросы от новичков
Zen of Python поддерживает новоприбывших в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросыновичков
@zen_of_python
TimesFM | анализ временных рядов от Google
Наконец у Facebook Prophet (Facebook признан экстремисткой организацией на территории РФ) появился достойный конкурент, причем на базе трансформеров.
Способ инициализации тоже очень лаконичный, и даже приводить столбцы к типам ds и y не требуется.forecast_df = tfm.forecast_on_df(
inputs=input_df,
freq="M", # monthly
value_name="y",
num_jobs=-1,
)
Репозиторий проекта
#библиотека
@zen_of_python
itrm | графики в CLI
Quick & Dirty решение для рендеринга чартов, по заверениям автора, лучше Matplotlib справляется с массивными датасетами, не плодит новых вкладок браузера каждый раз и не блокируется строкой plt.show()
.
Репозиторий проекта
#библиотека
@zen_of_python
marimo | Переосмысленные ipynb-ноутбуки
Выпускник Стэнфорда вместе с командой создал весьма симпатичный аналог Google Colab / Jupyter Notebook и рассказывает, как сохранить исполняемость кода вне зависимости от формата (.ipynb / .py).
У продукта хорошие шансы стать ещё одним популярным решением, ведь там есть и поддержка Git, и граф зависимостей. Да и специальные «коллабные» утилиты по чтению файлов и ключей подключать не надо.
#факты
🌚 — все равно Colab
☃️ — JN фарева
🎃 — люблю трудности: VSCode
✍️ — попробую на досуге
🐳 — другое (напишите в комментариях, что именно)
@zen_of_python
PEP 667 | апгрейд пространства имён
В ранних версиях Python все пространства имён были словарями. Для повышения производительности namespace была изменена, что привело к непоследовательному поведению locals()
и frame.f_locals
.
Вывод скрипта на изображении, мягко говоря, смущает и приводит к багам.
Суть PEP:
— Сделать пространства имён функций, классов и модулей согласованными;
— Изменения в frame.f_locals
незамедлительно отражаются в соответствующих переменных и наоборот;
— Функция locals()
возвращает снимок frame.f_locals
в случае функции.
⚡ — бывало такое;
🌭 — не сталкивался с locals();
🤓 — ещё только учусь читать PEP.
#факты
@zen_of_python
pyinfra | превращаем Py-скрипты в shell-команды
Библиотека превращает код.py в shell-команды для вашего сервера, Docker-контейнера, Terraform, Vagrant и проч. Масштабируется до тысячи устройств. Быстрый дебаг флажком -vvv
.
Репозиторий проекта
#библиотека
@zen_of_python
Вопрос от подписчика
Задаёт @SergioFabulous:
«Как настроить сохранение логов в разных файлах?
Чтобы file_1.py сохранял логи в file_1.log, file_2.py сохранял логи в file_2.log, ..., file_100500.py сохранял логи в file_100500.log»
От админа: loguru вам уже посоветовали, но все же интересно, какие ещё решения используют Py-разработчики?
🌚 — loguru;
🏆 — Python logging;
⚡— sentry;
🐳 — записываю в файлы встроенными компонентами;
☃️ — другое (напишите в комментариях, что именно);
👾 — это вне моей специфики.
@zen_of_python
Вопросы от новичков
Zen of Python поддерживает новоприбывших в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросыновичков
@zen_of_python
selfedu | Туторы про Python, Django, ML и окололежащее
selfedu_rus/videos">Годный YouTube-канал про основы ООП, хранение данных, веб-фреймворки и темы-сателлиты. Спасибо подписчику @Sarutor за рекомендацию.
Подборка популярных видео:
— ООП в Py простыми словами;
— полносвязная нейросеть;
— Тервер. Формула Байеса;
— История нейросетей.
#подборка
@zen_of_python
jupysql | SQL в ноутбуке.ipynb
С этой библиотекой не придётся перегружать память собственного компьютера. Мэджик-командой %sql можно обратиться к БД на сервере. Поддерживает перегонку из SQL-таблицы в датафрейм pandas.
Репозиторий проекта
@zen_of_python
Когда клиент вносит «совсем незначительные» правки в проект:
Читать полностью…Задача о драгоценностях
Вам дана строка jewels — типы камней (все буквы уникальны), и stones — камни в наличии у ювелира. Каждый символ в stones — тип имеющегося камня.
Создайте функцию is_jewel()
, определяющую, сколько камней драгоценны, а сколько нет.
Условия:
— Присутствует чувствительность к регистру («а» и «А» – разные камни).
—
1 <= jewels.length, stones.length <= 50
jewels = "aA" # a — бриллиант, A – сапфир
stones = "aAAbbbb" # b — кварц (недрагоценный)
>>> is_jewel(stones, jewel)
... 3
А инсайтами никто не вдохновляется, потому что коллеги повыгорали.
@zen_of_python
Python + PostgreSQL как простой таскер на заднем плане
Разработчик Том Дикан показывает (статья на английском), как использовать эту пару на некрупных проектах в качестве аналога Redis / Celery.
#факты
@zen_of_python
Проведите лето с Яндекс Практикумом и вернитесь на работу с новыми скилами
До конца июня вы можете получить дополнительный курс по цене одного.
— Выберите любой курс для специалистов с опытом и оплатите его до 30.06.
— Получите курс «Навыки рабочей коммуникации» в подарок.
— Изучите новые навыки, которые помогут вам вырасти в карьере.
Выбрать курс: https://clck.ru/3AcfYk
Это #партнёрский пост
tartufo | Предотвращаем коммит ключей
Инструмент сканирует репозиторий на предмет оставленных логинов, паролей, токенов и других авторизационных данных. В целом эта логика, по мнению админа, грамотнее, чем дожидаться от условного GitHub «письма счастья» о слитом креде.
Почему Тартюф (персонаж-обманщик)? Бог его знает.
Репозиторий проекта
#библиотека
@zen_of_python
Вопрос от подписчика
Задаёт @Konstantin_O1:
«Как с различными версиями питона работать на windows через pyenv?»
От админа: допускаю, что вы знаете про pyenv-win.
Тогда после установки управление версиями сводится к несложным командам:pyenv install 3.x.x
pyenv local 3.x.x # для виртуального окружения
pyenv global 3.x.x # для всей ОС
Коллеги, поделитесь своим опытом решения этой задачи. ! Пожалуйста, будьте взаимовежливы. Всем нам нужно место, где можно попросить помощи.
@zen_of_python
Вопрос от подписчика
Задаёт @py2134:
«Как создать интерфейс? И можно ли улучшить vosk (воск)?»
От админа: Tkinter — первое, что приходит на ум, но вы с ней, вероятно, и так знакомы.
! Пожалуйста, будьте взаимовежливы. Всем нам нужно место, где помогут даже с самым простым вопросом.
@zen_of_python