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

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

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

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
加入频道
🏆🎬🐍 Замените слово в названии какого-нибудь фильма словом «Питон».

Пишите свои варианты в комментарии👇

#интерактив
😁5🔥3👍2
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍2🔥1
🐍 Подвох в работе со списками

Автор статьи описывает распространённую ошибку в Python, связанную с изменением списка во время итерации по нему.

⚠️ Удаление или изменение элементов списка во время прохода по нему может привести к непредсказуемому поведению.

В качестве решения автор предлагает создать новый список с нужными элементами или использовать list comprehension.

🔗 Более подробно можно прочесть по этой ссылке
👍6🔥1
Для чего нужен декоратор property?

В Python для доступа к «приватным» свойствам используются специальные методы класса — геттеры и сеттеры (get_name, set_name, например). Их нужно прописывать для каждого «приватного» свойства отдельно, что может сделать код громоздким. Зато сеттеры, например, позволяют проверять тип данных перед изменением значения какого-либо свойства.

Property выполняет ту же задачу, а также улучшает инкапсуляцию. Если прописать его как декоратор @property перед каким-то методом, то он станет геттером, то есть будет возвращать значение атрибута. Помимо этого, можно использовать декораторы @property.setter для превращения метода в сеттер и @property.deleter для превращения метода в метод, который удаляет свойство.

▶️Пример кода:
class Circle:
def __init__(self, radius):
self._radius = radius

@property
def radius(self):
"""Возвращает радиус круга."""
return self._radius

@radius.setter
def radius(self, value):
"""Устанавливает радиус круга, предварительно проверив, что значение положительное."""
if value >= 0:
self._radius = value
else:
raise ValueError("Радиус не может быть отрицательным")

@radius.deleter
def radius(self):
"""Удаляет радиус круга, заменяя его нулевым значением."""
self._radius = 0


#вопросы_с_собеседований
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥12
Forwarded from Библиотека программиста | программирование, кодинг, разработка
👩‍💻 14 талантливых женщин, сделавших неоценимый вклад в ИТ

Дочь распутного поэта, католическая монахиня, голливудская звезда и контр-адмирал — что может их объединять? Вклад в развитие ИТ!

👉 Читать статью
👉 Зеркало
🔥9🥱9👍3
⚙️ Туториал по классу deque() модуля collections в Python

Deque позволяет работать с очередями — структурой данных, которая устроена именно так, как называется. Добавление и удаление элементов в очереди происходит так, что первым из очереди удаляется элемент, который был и помещён туда первым.

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

1️⃣Получение последних 5 строк файла
from collections import deque

with open(filepath, "r") as file:
last_5_lines = deque(file, maxlen=5)

print(last_5_lines)

2️⃣ Вычисление скользящего среднего
from collections import deque

def moving_averages(data, window_size):
values = []
window = deque(maxlen=window_size)
for element in data:
window.append(element)
values.append(sum(window) / len(window))
return values


🔗 Остальные примеры использования и другие подробности о deque можно прочесть в этой статье
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2
💬 Open Source по-русски: путь к технологической независимости или обочина прогресса?

Для одних организаций open source является ключом к преодолению зависимости от иностранных вендоров и драйвером инноваций, для других — дырой в безопасности и обочиной технологического прогресса.

Мы хотим изучить текущее состояние и возможности открытого ПО в России. Пройдите опрос и помогите нам увидеть ситуацию глазами IT-профессионалов.

👉 Ссылка на опрос 👈

Прохождение займёт примерно 4 минуты
👍6🔥1
🐍 С основной веткой Python слили выключатель GIL

GIL (Global Interpreter Lock) — это механизм, используемый в CPython, который ограничивает выполнение кода только одним потоком за раз. Это мешает задействовать многозадачность и использовать полностью потенциал многоядерных процессоров.

Смёрдженный пулл-реквест добавляет возможность отключить GIL для free-threaded сборок. Сделать это можно двумя способами:
▫️ PYTHON_GIL=0
▫️ -X gil=0

Предусмотрена также возможность повторного включения GIL.

Ранее разработчики Python предупреждали, что отключение GIL сломает некоторые части текущего кода.

«Мы ожидаем, что отключение GIL поначалу будет довольно глючным. Поэтому, даже если мы собираемся отключить GIL по умолчанию в версии 3.13, мы, вероятно, захотим, чтобы GIL оставался включённым по умолчанию какое-то время».
Please open Telegram to view this post
VIEW IN TELEGRAM
👍205
🐍🗺 Создавайте захватывающие интерактивные карты с помощью Python

В новой статье разберём библиотеку визуализации данных Plotly. Шаг за шагом научимся создавать и настраивать простые и интерактивные карты, а также работать с картами Хороплета — особым типом карт, в которых используется цветовое кодирование для обозначения данных по конкретным географическим областям, таким как страны, штаты или города.

🔗 Читать статью
🔗 Зеркало
👍133
💬 Аннотации типов в Python: нужны ли?

Автор нового поста на «Хабре» рассуждает о том, зачем использовать аннотации типов и даёт ли это преимущество.

Справка:
Аннотации типов были введены в Python в версии 3.5. Они помогают обозначать типы для переменных и функций. При этом они не обеспечивают проверку типов на уровне интерпретатора.

Вот так код на Python выглядит без аннотации типов:
def add(a, b):
return a + b


А вот так с аннотацией:
def add(a: int, b: int) -> int:
return a + b


📌 Автор считает, что аннотации наиболее полезны в больших проектах, а вот для небольших скриптов их использование может быть избыточным.

🔗 Прочесть его мнение целиком можно здесь

А что вы думаете по этому поводу? Используете аннотацию типов в работе?
Please open Telegram to view this post
VIEW IN TELEGRAM
👏13👍92🔥2😁1
🐍🎸 Курс Django. Часть 3: Основы работы с формами

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

🔗 Читать статью
🔗 Зеркало

Предыдущие части:
Часть 1: Django — что это? Обзор и установка фреймворка, структура проекта
Часть 2: ORM и основы работы с базами данных
11🔥6
📊 Визуализируем данные с помощью Seaborn

Это новый туториал от Real Python. В статье объясняется, как:
▫️установить и начать работать с Seaborn,
▫️какие типы графиков есть в библиотеке,
▫️что такое Seaborn Objects.

🔗 Ссылка на статью
👍163
⚠️ Как работать с предупреждениями (warnings) в Python

Наверняка вы сталкивались с предупреждениями при исполнении программы. Чаще всего они говорят о том, что какие-то функции устарели. Но что если вам самим нужно создать такое предупреждение для потенциальных пользователей вашей программы?

☑️ Для этого в стандартной библиотеке Python есть модуль warnings. Создать предупреждение с его помощью очень легко:
import warnings
warnings.warn("Something wrong!")


Этот код выведет следующее: <ipython-input-2-f9c3380a9245>:2: UserWarning: Something wrong!
warnings.warn("Something wrong!")


Вы можете самостоятельно выбрать тип предупреждения вместо типа по умолчанию UserWarning:
warnings.warn("Oops!", category=RuntimeWarning)


✍️ Также в warnings есть контекстный менеджер для временного подавления предупреждений:
with warnings.catch_warnings():
warnings.simplefilter("ignore")
warnings.warn("Something wrong!")


В менеджере контекста все предупреждения просто игнорируются, что может пригодиться в некоторых случаях.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍236👾3🥰1
Обновите Django: вышли патчи безопасности

Команда Django выпустила Django 5.0.3, Django 4.2.11 и Django 3.2.25. Эти релизы закрывают дыру в безопасности, которая была найдена ранее.

Речь идёт о проблеме CVE-2024-27351, которая позволяла провести атаку типа «отказ в обслуживании», вызванную регулярным выражением. Уязвимость касалась метода django.utils.text.Truncator.words() (при использовании параметра html=True) и фильтра шаблона truncatewords_html. При обработке специальной строки, которая подаётся на вход этому методу или фильтру, может возникнуть чрезмерное потребление ресурсов системы из-за особенностей работы регулярных выражений.

Команда Django просит всех пользователей обновиться как можно быстрее.

🔗 Прочесть подробности
👍18🎉32
Awesome Python

Это репозиторий со списком лучших библиотек и фреймворков для множества задач. Включает в себя такие подразделы:
🔸Инструменты командной строки
▫️pgcli — PostgreSQL CLI с подсветкой синтаксиса;
▫️doitlive — инструмент для проведения презентаций в терминале.
🔸Разработка игр
▫️Arcade — фреймворк для создания игр с графикой и звуком;
▫️Pygame — набор модулей для написания игр.
🔸Обработка изображений
▫️pillow — библиотека для преобразования изображений;
▫️scikit-image — библиотека для научной обработки изображений.

🔗 Другие библиотеки смотрите в репозитории
👍74
🇺🇸 Белый дом призвал переходить на языки, обеспечивающие безопасную работу с памятью (как Python)

Такой призыв в конце февраля выпустил Office of the National Cyber Director (ONCD). Утверждается, что использование определённых языков программирования устраняет целый класс уязвимостей.

В самом пресс-релизе ONCD нет прямого указания на Python, однако ранее Cybersecurity and Infrastructure Security Agency (CISA) опубликовал список языков, обеспечивающих безопасную работу с памятью, и в него был включён Python. Помимо него в перечне есть C#, Go, Java, Rust и Swift.
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍2
🐍 Итоги недели в мире Python и обзоры новых инструментов

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

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

😏 Мнение: пора переключаться с бэкенда на ИИ

Общемировой тренд — увеличение спроса на ИИ-разработчиков. И у Python-специалистов есть огромное преимущество — они без особых усилий могут переключиться с бэкенда на машинное обучение. Автор этой публикации рассказал, с чего проще всего начать — с изучения супервостребованной RAG-технологии.

🎩 Hatchet — эффективная альтернатива Celery

Hatchet — это новая система распределения задач для управления сложными процессами. Она позволяет создавать отказоустойчивые процессы, решающие проблемы параллелизма, справедливости распределения задач и ограничения скорости обработки. Обо всех преимуществах Hatchet читайте в рассылке.

🌐 Niquests — продвинутая альтернатива Requests

Новая библиотека лишена некоторых недостатков старой, а также имеет дополнительные фичи. Какие — подробно рассказываем в статье на vc.

Вы можете подписаться на email-рассылку здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4🔥4
🃏Harlequin — SQL IDE прямо в терминале

Как пишут авторы о библиотеке: «Функции, которые вы ожидаете от IDE, прекрасно работают прямо в вашем терминале». Среди этих функций перечисляют:

▫️Каталог данных. Позволяет видеть таблицы, столбцы и их типы.
▪️Редактор запросов.
▫️Окно для просмотра результатов (может вывести 1M+).
▪️Экспорт результатов и история запросов.

🔗 Ссылка на репозиторий
👍26🥱2🔥1👏1
🐍🚀 Niquests: новый стандарт HTTP-клиентов в Python, превосходящий Requests

Библиотека Requests долгое время была де-факто стандартом для HTTP-запросов в Python, но у неё есть ряд серьезных недостатков. Инновационная библиотека Niquests не только исправляет ошибки Requests, но и предлагает множество улучшений.

В новой статье рассказываем обо всех преимуществах Niquests.

🔗 Читать статью
🔗 Зеркало
8👍8🤔3