Библиотека питониста | Python, Django, Flask
40.3K subscribers
2.8K photos
78 videos
51 files
4.39K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://t.iss.one/proglibrary/9197

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

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
🎸 10 причин, по которым стоит выбрать Django вместо FastAPI

FastAPI предлагает производительное, асинхронное, компактное и современное решение для разработки бэкенда и API на Python по сравнению с более зрелым, но несколько более громоздким Django. И всё же многие опытные бэкендеры предпочитают Django. Один из таких разработчиков поделился доводами в пользу Django.

🔗 Читать статью
🔗 Зеркало
😁20👍6🤔5🌚32👏1🥱1💯1
🕛 Справочник по временной сложности разных структур данных Python

В блоге Python Morsels опубликовали своего рода шпаргалку по Python Big O. Эта нотация позволяет оценить, как быстро увеличивается время выполнения операций в зависимости от размера данных.

В статье перечислены временные сложности распространённых операций со следующими структурами данных:
▫️Списки;
▫️Двухсторонние очереди;
▫️Словари;
▫️Множества;
▫️Counter;
▫️Очереди с приоритетом.

🔗 Читать статью
👍141
💩Чем init() отличается от new()?

В Python, методы __init__() и __new__() используются при создании объектов, но играют разные роли. Если коротко: __init__ обрабатывает инициализацию объекта, а __new__ — его создание.

Так, __new__ вызывается автоматически при создании экземпляра и, собственно, возвращает созданный объект. Метод __init__ вызывается каждый раз при возвращении этого созданного объекта и инициализирует его начальным состоянием, не возвращая ничего. То есть сначала вызывается __new__, а потом __init__

#вопросы_с_собеседований
Please open Telegram to view this post
VIEW IN TELEGRAM
31👍11
💫 Sphinx — инструмент для создания красивых документаций

Sphinx использует язык разметки reStructuredText.

Особенности:
▫️Генерация множества форматов: HTML, PDF, EPUB, TeX и др.
▫️ Лёгкое определение иерархической структуры с автоматическими ссылками.
▫️ Автоматическое создание индексов, которые упрощают навигацию по документации.
▫️ Автоматическая подсветка кода.
▫️ Расширяемая экосистема, поддержка множества плагинов, например для работы с Jupyter notebooks.
▫️Поддержка не только Python, но и C, C++, JavaScript и др.

Сегодня вышла последняя версия Sphinx 7.3.6.

🔗 Страница Sphinx на PyPI
🔗 Репозиторий
🔗 Документация
👍42
💬 Куда вы предпочитаете обращаться за подсказками, если нужно сделать что-то новое?

❤️ — YouTube-туториалы
👍 — документация

#интерактив
👍10249
🔤«F-строки, которые я использую каждый день»

Это статья-шпаргалка, которая охватывает основные сценарии использования f-строк:

🔘работа с числами и экспоненциальная запись
Последняя, в частности, выглядит так:
val = 1.23e3  # 1.23 * 10^3

print(f"Example 1: {val:e}")
print(f"Example 2: {val:E}")

🔘проценты
val = 0.5

print(f"Example 1: {val:%}")
print(f"Example 2: {val:.0%}")

🔘даты
🔘паддинги (отступы)
val = 1

print(f"1: {val:1d}")
print(f"2: {val:2d}")
print(f"3: {val:3d}")

🔘знаки плюса и минуса

🔗 Читать статью с подробностями и другими примерами
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35
🚀 Как быстро Python может спарсить миллиард строк данных?

Парень сделал ролик, в котором сравнил лучшие методики Python-разработчиков для решения One Billion Row Challenge. Участникам челленджа нужно написать программу, которая читает текстовый файл с миллиардом строк, вычисляет минимальное, среднее и максимальное значения температуры для каждой метеостанции и выводит результаты.

🐍 В ролике автор начал с разбора простейшего подхода к решению задачи, который требует более 9 минут. Переход с CPython на PyPy сократил время до приблизительно 5 минут. Далее парень разобрал самое быстрое решение на чистом Python (с использованием только встроенных библиотек), которое занимает 9.9 секунды.

Помимо этого, автор показал решения с привлечением сторонних библиотек: Polars и DuckDB (и они были хороши).

🔗 Смотреть ролик
🔥234👍1
🟰Математические основы генеративных нейронных сетей: что нужно знать для их изучения

Генеративный ИИ — это тип искусственного интеллекта, который после обучения на огромных массивах существующих данных способен создавать новый контент (текст, программный код, изображения, аудио, видео).

🪅Первыми примитивными примерами генеративного ИИ можно считать статистические модели, которые могли генерировать новые последовательности на основе заданных входных данных. Одна из таких моделей была использована для предсказания итогов президентских выборов в США в 1952 году.

↗️ Стремительное развитие генеративного ИИ началось в 2014 году, когда Ян Гудфеллоу и его коллеги представили генеративную состязательную сеть (GAN). Параллельно с этим, вариационные автокодировщики (VAE) и рекуррентные нейронные сети (RNN) тоже продемонстрировали впечатляющие способности к генерации нового контента. С тех пор генеративный ИИ развивается с головокружительной скоростью.

В новой статье рассказываем, какие разделы математики нужно знать для разработки современных генеративных моделей.

🔗 Читать статью
🔗 Зеркало
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65❤‍🔥1
📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих»

Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!

🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
35👍12🔥3❤‍🔥1
Хардкорный курс по математике для тех, кто правда любит математику!

Начать с вводных занятий можно здесь, ответив всего на 4 вопроса – https://proglib.io/w/8f9d3a94

Что вас ждет:

– Вводный урок от CPO курса

– Лекции с преподавателями ВМК МГУ по темам: теория множеств, непрерывность функции, основные формулы комбинаторики, матрицы и операции над ними, градиентный спуск

– Практические задания для закрепления материала и ссылки на дополнительные материалы.

⚡️ Переходите и начинайте учиться уже сегодня – https://proglib.io/w/8f9d3a94
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍31
Господа, наш случай👆

#memes
😁55👍4🔥1
*️⃣Почему умножение списков в Python такое неинтуитивное

Есть следующий код:
a = [[]] * 4
a[0].append("seriously?")
print(a)

Попробуйте, не глядя в ответ, сказать, что он выведет.
Ответ: [['seriously?'], ['seriously?'], ['seriously?'], ['seriously?']]

Если не угадали, не переживайте: вы не один такой. Дело здесь в следующем.

При работе с последовательностями (списками, строками) оператор * в Python просто повторяет элементы объекта нужное количество раз. Например, код 'a' * 3 выведет ‘aaa’. Аналогичным образом, [[]] * 4 выведет [[], [], [], []].

В Python всё является объектами, и доступ к каждому объекту осуществляется по ссылке. Так, в [[]] внутренний список является ссылкой на объект пустого списка. Оператор * просто копирует эту ссылку четыре раза, в результате получается [[], [], [], []]. Все эти повторяющиеся внутренние списки являются ссылками на один и тот же изначальный пустой список. Можно проверить это через id:
print([id(x) for x in a])

Поэтому неудивительно, что изменение первого элемента в a влечёт за собой изменение всех остальных элементов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍498❤‍🔥3💯3🔥2
🔍💼 Исследование рынка: 8 наиболее востребованных языков программирования в 2024 году

Результаты исследования рынка IT-вакансий, проведенного DevJobsScanner. Были проанализированы 14 миллионов объявлений и выявлены 8 наиболее востребованных языков программирования.

Читать статью

#почитать
👍8🤔1🌚1