Библиотека питониста | Python, Django, Flask
40.6K subscribers
2.75K photos
75 videos
51 files
4.33K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Курс по ML: https://cl

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
加入频道
🕷️ Scrapy — гибкий фреймворк для написания парсеров

Scrapy изначально был создан для веб-парсинга, но его также можно использовать для извлечения данных через API или как веб-краулер. Помимо этого:

▪️имеет встроенную поддержку для извлечения данных из HTML/XML источников с помощью расширенных CSS-селекторов и выражений XPath,
▪️предоставляет интерактивную консоль для тестирования и отладки,
▪️поддерживает экспорт данных в разных форматах (JSON, CSV, XML),
▪️поддерживает множество кодировок.

Вчера вышел последний релиз Scrapy 2.11.1

🔗 Ссылка на страницу парсера на PyPI
8🔥2👏2👍1
🐍 Туториал Real Python по декораторам

В нём рассказывается, как создавать декораторы и использовать их. В частности, туториал охватывает темы:
▫️Что значит, когда функции являются объектами первого класса.
▫️Как определять функции, чтобы их можно было использовать в качестве декораторов.
▫️Какие практические задачи можно решать с помощью декораторов.
▫️Лучшие практики создания декораторов.

🔗 Ссылка на полный туториал
👍13🥰21
🤔 Остаться или уйти? Оптимальный срок работы на одном месте

Вы любите свою работу, интересные проекты вам гарантированы, зарплата повышается каждый год. Но вот уже 5 лет вы трудитесь в одной и той же компании. Не пора ли что-то изменить, пока мотивация окончательно не улетучилась?

Многие опытные айтишники сталкиваются с такой дилеммой. С одной стороны, текущее место работы устраивает. С другой — хочется разнообразия, новых задач и знаний.

Должен ли современный IT-специалист менять работу чаще, чем раз в 5 лет? Или лучше наращивать экспертизу в рамках одной компании? А может дело совсем не в сроках, а в качестве задач и развитии карьеры?

👉 Расскажите о своём опыте в нашем новом опросе 👈
👍7🎉2
📦 uv — новый инструмент для работы с зависимостями в Python, написанный на Rust

Создатели позиционируют его как замену pip, pip-tools и virtualenv. Это, кстати, те же разработчики, которые сделали линтер Ruff.

На картинке показано сравнение uv с другими инструментами в разрешении зависимостей (слева) и установке (справа) зависимостей Trio с использованием прогретого кеша.

🔗 Более подробный пост о проекте
🔗 Репозиторий на GitHub
🔥20👍3
🐍 Итоги недели в мире Python и обзоры новых инструментов

У нас есть еженедельная рассылка о последних открытиях и тенденциях в мире Python. Мы опубликовали один из свежих выпусков на 📰.

Ниже — небольшая подборка, а целиком читайте здесь 👈

🔎 Поисковик на 80 строках кода

Публикация рассказывает, как сделать базовую поисковую систему буквально на 80 строках Python-кода. Автор реализовал все основные компоненты поисковика: краулер, инвертированный индекс, ранжировщик и интерфейс.

⭐️ Полезные библиотеки

▪️Web2PDF – CLI-инструмент для конвертации веб-страниц (по URL) в PDF-файлы.
▪️Rexi – инструмент для работы с регулярными выражениями в терминале.
▪️Django HTMX Components – набор готовых компонентов, которые можно скопировать и вставить в Django-приложение.

🕹 Управление зависимостями

Туториал, который рассказывает, как начать пользоваться Poetry.

🔥 Интересные проекты

▪️«Гарри Поттер и движок Elasticsearch» — это семантическая поисковая система на основе векторной базы данных с информацией о вселенной Гарри Поттера.
▪️Чат-бот, имитирующий стиль Эминема.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🔨 Реализация парсеров с Pylasu

В новой статье рассказывается, как:
▪️создать грамматику ANTLR для простого «игрушечного» языка программирования Slang и сгенерировать парсер из этой грамматики,
▪️определить абстрактное синтаксическое дерево (AST) с помощью Pylasu,
▪️интегрировать парсер в приложение командной строки, позволяя пользователям анализировать код на Slang как из строк, так и из файлов, и визуализировать соответствующее AST в формате JSON.

🔗 Читать статью полностью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🎉2
👀 Итоги недели в мире ИИ и обзоры новых сервисов

У нас вышла интересная статья на 📰 по мотивам еженедельной рассылки про последние новости и тенденции в мире ИИ.

Ниже — небольшая подборка, а целиком читайте здесь 👈

💬Новости

▫️ Исследователи Стэнфордского университета обнаружили, что чат-боты склонны делать выбор в пользу насилия и ядерных ударов в военных играх.
▫️Разработчики приложения для знакомств Bumble протестировали новую AI-функцию Deception Detector, которая автоматически заблокировала 95% мошеннических аккаунтов.
▫️Google создала MobileDiffusion — мини-модель для супербыстрой генерации изображений на смартфонах.

🛠 Инструменты

▫️UserSketch — создаёт чат-бота на основе единой базы знаний с данными, собранными из любых документов, почты, мессенджеров, приложений для управления проектами и организации бизнес-процессов.
▫️Ytube AI — превращает YouTube-видео в SEO-оптимизированные статьи.
▫️ThreadScribe.ai — превращает сообщения из Slack в структурированную базу знаний, которой можно задавать любые вопросы и получать инсайты.
▫️Fooocus — бесплатная опенсорсная альтернатива Midjourney. Устанавливается локально.

⚙️ Сделай сам

Google выпустила инструмент localllm для запуска LLM локально или в облаке, на CPU вместо GPU. Подробный туториал по установке и настройке localllm — в блоге разработчиков.

🎓 Исследования

Исследователи из Технологического института Джорджии представили PokéLLMon. Возможности этого ИИ-агента сопоставимы с человеческими — он уже выиграл 56% боев против людей. Авторы также нашли способ избавиться от галлюцинаций и решили проблему панического переключения, когда при столкновении с сильным противником агент начинал хаотично переключаться между покемонами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
This media is not supported in your browser
VIEW IN TELEGRAM
🪄 Самый простой способ добавить вход по магической ссылке с помощью Django

Вход по магической ссылке подразумевает альтернативный способ аутентификации без использования логина и пароля. Вот как он работает:

▪️Пользователь вводит его email и кликает на кнопку.
▪️Затем он переходит по ссылке, которая пришла на его почту.
▪️Вуаля — он залогинен.

Как реализовать это через Django — читайте в новой статье 👈
👍222🥱2
Функция enumerate

Эта встроенная функция снабжает циклы счётчиком. Возвращает генераторный объект, который имеет метод, вызываемый встроенной функцией next: на каждом проходе цикла возвращает кортеж {индекс, значение}. Цикл for проходит по этим кортежам автоматически, что позволяет распаковывать их значения с помощью присваивания кортежей почти так, как в zip.
S = "stroka"

example = enumerate(S)
next(example) # -> (0, 's')


✔️ Вот пример использования:

shopping_list = ['яблоки', 'бананы', 'апельсины', 'хлеб']

for index, item in enumerate(shopping_list, start=1):
print(f"Пункт {index}: {item}")
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍15
🙂 Рубрика: вредные советы питонистам

В Python можно выпрямить вложенные списки с помощью... функции sum(). Вот код (выполнять, пока никто не видит):
l=[['a', 'b', 'c'], ['1', '2'], ['#']]
sum(l, [])


Дело в том, что sum() принимает первым аргументом итерируемый объект, а вторым — значение, с которого начинается операция. По умолчанию это 0, но если указать пустой список [], то sum() начнёт с него. Затем sum() последовательно применяет операцию сложения к элементам первого аргумента, начиная со значения второго аргумента. В случае списков это означает конкатенацию.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46😁12🤩2🥱21
🐍 Цепи Маркова: генерирование читабельной бессмыслицы за 20 строк на Python

В новой статье научимся генерировать осмысленные, но в то же время абсурдные фразы и предложения с помощью цепи Маркова.

🔗 Читать статью
🔗 Зеркало
👍18
🐍 Почему не стоит использовать неподдерживаемые библиотеки

Автор новой статьи объясняет, почему перед установкой понравившейся библиотеки стоит проверить, поддерживает ли её разработчик. Он приводит в пример Flask-Mail, у которой последний коммит был 9 лет назад. При этом, если гуглить статьи об отправке email в Flask, то 20 лучших результатов будут упоминать именно эту библиотеку.

Однако проблемы безопасности библиотеки не исправляются. Кроме того, может в любой момент отвалиться совместимость с новой версией Python.

🔗 Прочесть статью целиком можно по этой ссылке
👍152🔥1😁1
🎂Сегодня – день рождения Python🎂

33
года назад Гвидо ван Россум релизнул Python. На сегодняшний день он является самым популярным языком программирования в мире 💗

Выпьем за Python любимый напиток и продолжим кодить 🍾
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🎉4321🥰5😁32👏1🌚1👾1
🎂 Опрос в честь дня рождения: сколько лет вы уже пишете на Python?

🎉 — более 5 лет
❤️ — 3-5 лет
👍 — 1-2 года
🥰 — я в теме меньше года

#интерактив
🥰213👍178146🎉112👾4🌚2👏1🤔1🤩1
📈 5 трендов в подборе ИТ-специалистов на 2024 год

Использование ИИ-алгоритмов становится трендом и в Human Resources. Такими инструментами пользуются и кандидаты, и работодатели.

🤖 Например, появляются Applicant tracking system (ATS) с ИИ, которые автоматизируют поиск и отбор кандидатов. А ещё есть Final Round AI — своеобразный помощник с искусственным интеллектом, который генерирует индивидуальные ответы на онлайн-интервью в режиме реального времени.

👉 О других трендах читайте в нашей новой статье 👈
🔗 Зеркало
5👍1
big-o-cheatsheet.pdf
254.8 KB
🤔 Вычислительная сложность алгоритмов: удобная шпаргалка

Понимание вычислительной сложности алгоритмов важно для разработчика. Как минимум, про это могут спросить на собеседовании, как максимум — это поможет улучшить ваш проект. 

Что это такое?

Вычислительная сложность пытается ответить: как изменятся время исполнения алгоритма и объём занятой памяти в зависимости от размера входных данных? Тут вводится понятие асимптотической сложности. Это математическая модель, описывающая поведение ограничений на ресурсы (например, время выполнения или использование памяти) в пределе, когда размер входных данных стремится к бесконечности. Алгоритм с меньшей асимптотической сложностью является более эффективным для всех входных данных.

 Для асимптотической сложности алгоритма используется следующая нотация: 𝑂
(«О»-большое), которое описывает верхнюю границу времени. 

✍️ Категории алгоритмической сложности в 𝑂-нотации:

- Постоянное время: 𝑂(1)
Время выполнения не зависит от количества элементов во входном наборе данных.
- Линейное время: 𝑂(𝑁)
Время выполнения пропорционально количеству элементов в наборе.
- Логарифмическое время: 𝑂(log𝑁)
Время выполнения пропорционально логарифму от количества элементов в наборе.
- Линейно-логарифмическое время: 𝑂(𝑁log𝑁)
Время выполнения больше чем, линейное, но меньше квадратичного.
- Квадратичное время: 𝑂(𝑁^2)
Время выполнения пропорционально квадрату количества элементов в наборе.

🔗 Ссылка на отличную шпаргалку
👍6🥰6🔥2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
⛩️ 6 способов нестандартно войти в Айти

Стандартный способ вхождения в профессию программиста — через универ. Все, что отличается от него, уже считается нестандартным способом. Разбираем несколько необычных способов входа в ИТ-сферу и то, какие преимущества они дают:

🛤 Роадмапы
👨‍💻 Знакомые айтишники
💬 Комментарии
🙌 Менторинг
🕹 Игры
⌨️ Стажировки
👍76🔥4
Media is too big
VIEW IN TELEGRAM
💬 Vanna — библиотека для общения с БД на естественном языке

Инструмент по вашей просьбе генерирует SQL-запрос, который отправляется к базе данных. Работа Vanna проходит в два шага:
▫️Обучение на ваших данных из базы.
▫️Ответы на запросы.

🔗 Ссылка на подробный гайд по началу работы с Vanna (внутри также есть ссылки на Google Colab и GitHub)
❤‍🔥11🔥6🥰3😁1
Что выведет код с картинки выше и почему?
Anonymous Quiz
67%
True
25%
False
5%
1
3%
0
👍6
🐍 Краткое руководство по основным изменениям в каждой новой версии Python

Автор собрал небольшой справочник, в котором перечислил, что нового появлялось в Python, начиная с Python 3.5. Вот некоторые заметные нововведения:

▶️Python 3.6 — f-строки (f"{текст}")
▶️Python 3.8 — моржовый оператор (walrus)
if (thing := get_thing()) is not None:
do_something(thing)
else:
raise Exception(f"Something is wrong with {thing}")

▶️Python 3.9 — оператор объединения для словарей
combined_dict = dict_one | dict_two
updated_dict |= dict_three

▶️Python 3.10 — match/case

🔗 Подробнее об этом всём читайте в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19😁5🔥1