Библиотека питониста | Python, Django, Flask
40.7K subscribers
2.72K photos
74 videos
51 files
4.3K links
Все самое полезное для питониста в одном канале.

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

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
👍 Method Chainingэффективный код в одну строку

Метод чейнинг (method chaining) — техника вызова нескольких методов на одном объекте в одной строке, где каждый метод возвращает self, позволяя обходиться без промежуточных переменных.

🔹 Преимущества:

• Меньше кода — избавляет от промежуточных переменных.
• Читаемость — код выглядит как последовательность логичных операций.
• Элегантный дизайн — делает API удобным для использования.

🔹 Недостатки:

• Трудность отладки — если что-то сломается, сложно найти источник ошибки.
• Длинные цепочки — могут ухудшать читаемость, если используются чрезмерно.
• Жёсткая связь методов — изменения в классе могут затронуть всю цепочку.

🎯 Когда использовать Method Chaining:

• Трансформации данных — очистка текста, математические вычисления, работа с датафреймами.
• Формировании Fluent API — используется в pandas, jQuery и других библиотеках для удобного взаимодействия с объектами.

🏆 Лучшие практики использования:
• Возвращайте self правильно — убедитесь, что каждый метод возвращает объект, с которым ведется работа, а не новый объект.
• Читаемые цепочки — избегайте слишком длинных цепочек, которые трудно отлаживать.
• Обработка ошибок — добавьте обработку исключений, чтобы не прерывать выполнение кода в случае ошибки.
• Логичность — методы должны выполняться в последовательности, логичной для объекта.

🔹 Пример на Pandas:
import pandas as pd

df = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})
result = df.rename(columns={'Name': 'Full Name'}).sort_values(by='Age').reset_index(drop=True)
print(result)


🔹Пример на Flask:
from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/')
def index():
return jsonify(message="Hello, World!").status_code(200)


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍7😁1🥱1
🗣️ Истории подписчиков: как я получил первую работу

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

😅 Вот моя история:
Когда я только начал осваивать Python, казалось, что программирование — это просто. Прочитал пару статей, написал скрипты, и вот ты уже почти профессионал! Но на собеседовании меня ждали реальные вызовы: задачи на логику, библиотеки, многозадачность... Я, конечно, не знал ответа на половину вопросов.

Но я не сдался! На интервью я признался, что не знаю всех ответов, но готов учиться. Мне дали тестовое задание. Потратил много времени, но в конце понял, что допустил элементарную ошибку с декоратором! Переписал, отправил, и через пару дней получил предложение о работе.

Этот опыт научил меня важному: не бойся признавать свои слабости, если ты готов учиться и расти.


А как вы получили свою первую работу? Делитесь в комментариях! 😁

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84😁3
🔥 PyGWalker: ускорьте анализ и визуализацию данных

PyGWalker — инструмент, который превращает pandas DataFrame в интерактивный интерфейс для визуального исследования данных.

🔹 Что он умеет?
• Интеграция с Jupyter Notebook.
• Визуализация данных с помощью drag-and-drop.
• Очистка и аннотация данных.
• Поддержка запросов на естественном языке.

💡 Если вы аналитик данных или исследователь, PyGWalker поможет вам быстрее анализировать данные и создавать наглядные отчёты без сложного кода.

🔗 Ссылка на репозиторий: https://clc.to/QjWKzg

Библиотека питониста #буст
👍12❤‍🔥2🔥1
🧩💊 Алгоритмическая самоуспокоенность: как мы разучились думать своей головой

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

Это не просто влияет на настроение, но и на способность анализировать информацию, принимать решения и, главное, не становиться частью системы манипуляций.

Если вы хотите вернуться к осознанному подходу в восприятии мира и научиться фильтровать контент, то эта тема точно для вас.

🔗 Подробнее в статье

🐸 Библиотека джависта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83
Встречайте: мой код, во всей его красе 😆

Библиотека питониста #развлекалово
😁37👍4
6 слов, которые знакомы каждому Python-разработчику

Отложим кодинг и разомнём мозги с нашим небольшим кроссвордом. 💡

По горизонтали:
1. Функция, которая позволяет модифицировать поведение другой функции.

5. Область видимости переменных в коде.

По вертикали:
2. Расширение программы, которое обычно содержит библиотеки и файлы.

3. Способ выполнения асинхронных задач в Python.

4. Фреймворк для создания веб-приложений.

6. Пакетный менеджер для установки Python-библиотек.

Делитесь своими ответами в комментариях 👇

Прячем ответы под спойлер, даём шанс угадать всем.

Библиотека питониста #междусобойчик
👍74🥱1
🐍 Python новости

🚀 Релизы и инструменты:
Django 5.2 RC1 — последний шанс протестировать новые функции перед релизом.
Unvibe — новый Python-инструмент для генерации кода из unit-тестов.
Marimo — переосмысление ноутбуков как переиспользуемых Python-программ.

🔬 Глубже в Python:
Operationalizing Python — почему Python становится трудно поддерживаемым.
Weakref в Python — руководство по слабым ссылкам.

📚 Обучение и лучшие практики:
100 самых популярных Python-докладов 2024 года.
5 листингов для лучшего понимания Python.
Генерация синтетических данных в Python.

🔧 DevOps и безопасность:
Иерархия контроля в DevOps — как защитить прод от ошибок разработчиков.

Библиотека питониста #свежак
👍43🔥1
🤔 Почему не стоит использовать изменяемые объекты как параметры по-умолчанию?

В Python не рекомендуется использовать изменяемые объекты в качестве значений параметров по умолчанию по следующим причинам:

— Значения по умолчанию вычисляются один раз при определении функции, а не при каждом вызове.

— Если использовать изменяемый объект (список, словарь), то изменения в нем будут сохраняться между вызовами функции. Это может привести к неочевидному поведению и трудноуловимым ошибкам при многократном вызове функции.

В качестве альтернативы можно задавать значение по умолчанию как None, а в теле функции создавать новый изменяемый объект, если значение не передано.
Такой подход позволяет избежать «эффекта переноса» состояния между вызовами и делает код более понятным и предсказуемым.


Библиотека собеса по Python
👍148❤‍🔥2👏1
Что выведет код сверху?

👾 — ypyP 1
👍 — ypyP 3
🥰 — y 3
⚡️ — y1

Библиотека задач по Python
🥰91👍21👾202
📈 Исследование IT-аудитории Proglib 2025: зарплаты, технологии, профессии

Кто такой современный разработчик в 2025 году? Актуальное исследование портрета IT-специалистов: зарплаты, технологии, специализации и демография разработчиков.

👉 Читать полный анализ: https://proglib.io/sh/NbJAHIDRTg

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3👍21🌚1
🏗 Управление памятью в Python: как это работает

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

1. Python управляет памятью автоматически

Когда вы пишете x = [1, 2, 3], Python не заставляет вас думать о байтах и указателях. Он сам выделяет память, отслеживает объекты и убирает мусор. Всё это делает менеджер памяти, который хранит:

▪️ Тип данных (int, list, dict)
▪️ Счетчик ссылок (кто использует объект)
▪️ Значение (сами данные)

Такой подход удобен: нет «висячих указателей», не нужно вручную вызывать malloc/free, а ресурсы оптимизируются автоматически.

2. Счетчик ссылок

Каждый объект в Python — как воздушный шарик. Пока его кто-то держит (есть ссылки), он остается. Если все нити отпущены — объект исчезает.

Как это работает:
import sys

a = [1, 2, 3]
print(sys.getrefcount(a)) # 2 (одна ссылка в переменной + вызов функции)
b = a
print(sys.getrefcount(a)) # 3 (еще одна ссылка)
del a
print(sys.getrefcount(b)) # 2 (одна ссылка удалена)
b = None # Объект больше не используется → удален


💡Но есть нюансы: Python кэширует строки и мелкие числа (-5 до 256), поэтому их ссылки могут не изменяться.

3. Сборщик мусора

Если объекты ссылаются друг на друга, счетчик ссылок их не удалит. Например:
class Node:
def __init__(self):
self.parent = None

a = Node()
b = Node()
a.parent = b
b.parent = a # Циклическая ссылка!


Такие объекты удаляет сборщик мусора (Garbage Collector, GC), используя алгоритм поколений:

🍼 Поколение 0 — новые объекты, проверяются чаще.
🧑‍💼 Поколение 1 — пережили одну проверку.
🦖 Поколение 2 — «старожилы», проверяются реже.

Управление GC:
import gc
gc.collect() # Принудительный запуск
gc.set_threshold(700, 10, 10) # Настройка частоты очистки


💡 Совет: если у вас много циклических объектов, очищайте их вручную (gc.collect()).

4. Как оптимизировать память вручную

🔸 slots для уменьшения потребления памяти:
class User:
slots = ['name', 'age'] # Экономит до 40% памяти

def __init__(self, name, age):
self.name = name
self.age = age


🔸 Генераторы вместо списков:
 # Неоптимально:
lines = open("data.txt").readlines() #Весь файл в памяти!

# Оптимально:
def read_lines(filename):
with open(filename) as f:
for line in f:
yield line # Читаем по одной строке


🔸 Массивы вместо списков:
import array
numbers = array.array('i', [1, 2, 3, 4, 5]) # Числовой массив (экономия памяти)


🔸 Кэширование с lru_cache:
from functools import lru_cache

@lru_cache(maxsize=1000)
def compute(x):
return x 2 # Кэширует результаты функции


5. Как искать утечки памяти

🔸 Используем tracemalloc — показывает, где «утекает» память:
import tracemalloc

tracemalloc.start()
data = [x for x in range(10_000)] # Проблемный код

snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')
print(top_stats[0]) # Где выделена память?


🔸 Визуализация с objgraph — рисует граф зависимостей:
import objgraph
objgraph.show_most_common_types(limit=5) # Какие объекты «размножаются»?


📌 Подробнее про управление памятью в Python: https://clc.to/SNaUtg

Библиотека питониста #буст
👍254❤‍🔥1
📊 Собес по Data Science: 10 вопросов, которые разделяют джунов от мидлов

Готовишься к интервью? Мы собрали 10 каверзных вопросов, которые любят задавать тимлиды. Здесь нет банальных задач — только те, на которых спотыкаются 80% кандидатов. Проверь себя и узнай, готов ли ты к следующему собесу!

💬 Пройти тест

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥1
💾 Как выбрать стратегию кэширования: разбор 7 популярных алгоритмов

Кешировать нужно с умом. И нет, LRU — не серебряная пуля.

В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии

Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.

➡️ Читать статью

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 reloading: перезагрузка кода без потери состояния

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

🔹 Когда полезно?

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

Установка:
pip install reloading


🔹Как использовать?

Перезагрузка тела цикла перед каждой итерацией:
from reloading import reloading

for i in reloading(range(10)):
# этот код будет обновляться перед каждой итерацией
print(i)


Перезагрузка функции перед каждым вызовом:
from reloading import reloading

@reloading
def some_function():
# этот код будет обновляться перед каждым вызовом
pass


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82❤‍🔥1
Признавайтесь, кто уже заменил Stack Overflow на ChatGPT? 😏

Библиотека питониста #развлекалово
😁24💯9👏32👍1🥱1
🎧 Что послушать: обнаружение выбросов в данных с Python

В свежем выпуске Talk Python to Me обсуждают, как находить аномальные данные и использовать их для обнаружения мошенничества, неожиданных закономерностей и научных открытий.

Темы выпуска:
🎙️ Почему выбросы важны? Ошибки, инсайты и скрытые паттерны
🎙️ Методы обнаружения выбросов и их отличие от предсказания и кластеризации
🎙️ Практические кейсы и новые исследования

Если хотите научиться замечать аномалии и использовать их в своих проектах — этот выпуск для вас!

🔗 Слушать подкаст: https://clc.to/S3qK4Q

Библиотека питониста #буст
2👍2
☸️ CKAD 2025. Самый свежий гайд по сдаче сертификации Certified Kubernetes Application Developer

CKAD стал более строгим к деталям — без системной подготовки можно завалить даже на банальных заданиях. Если хочется разобраться, что важно для получения сертификации — эта статья сэкономит часы.

➡️ Читать статью

🐸Библиотека devops'a
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤‍🔥11
🤖 IT-выживание 2025: как не вылететь с рынка труда в эпоху LLM

В 2025-м айтишникам приходится несладко: старые скиллы уже не в цене, LLM наступают на пятки, а работодатели хотят все и сразу.

👍 Делимся инсайдами, как выжить в новой реальности и не потерять работу в эпоху тотальной оптимизации.

👉 Ссылка на статью: https://proglib.io/sh/zEruLHxYno

Библиотека дата-сайентиста
👾4❤‍🔥2👍2🙏1💯1
🤓 Вопросы подписчиков: как перейти от Jupyter Notebooks к продакшн-коду?

Сегодня мы делимся вопросом от подписчика, который учился и разрабатывал проекты в Anaconda Notebooks, но стремится выйти на новый уровень и освоить написание продакшн-кода на Python.

💬 Он пишет:
Я начинал учиться и программировать в Anaconda Notebooks — это отличный инструмент для учебы и исследований. Однако в индустрии подход к коду совсем другой. Там он структурирован: используются субпапки, главный .py-файл объединяет всё, а развертывание, API и тесты разнесены по отдельным директориям. Это как готовое здание с надежным фундаментом и продуманной структурой, где все части взаимосвязаны.

Если вы работаете с Python в индустрии, не могли бы вы посоветовать, как перейти от стиля работы в ноутбуках к созданию продакшн-кода?


✌️ Делитесь своими советами в комментариях!

P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👍2😁1🤔1
🔝 Команда дня: разбираем `functools.partial` в Python

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

🔹 Как это работает?

С помощью partial можно «заморозить» часть аргументов, чтобы создать новую функцию с меньшим числом входных параметров.

📌 Пример: фиксируем аргумент
from functools import partial

def multiply(x, y):
return x * y

double = partial(multiply, 2) # "Фиксируем" x как 2

print(double(5)) # Вывод: 10 (2 * 5)


Теперь double(5) эквивалентно multiply(2, 5), потому что 2 уже зафиксировано.

📌 Пример: фиксируем именованные аргументы
def greet(name, greeting="Hello"):
return f"{greeting}, {name}!"

say_hi = partial(greet, greeting="Hi")
print(say_hi("Alice")) # Вывод: Hi, Alice!


Теперь say_hi("Alice") всегда будет использовать "Hi" в качестве приветствия.

🔹 Зачем использовать partial?

— Упрощает код и уменьшает дублирование.
— Делает функции удобнее для повторного использования.
— Полезен в обработчиках событий и коллбэках.

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍153🔥2
🚀 Открыт прием заявок на Google Summer of Code 2025

С 2005 года эта программа помогает студентам и начинающим разработчикам погрузиться в реальный мир программирования, работая над крутыми проектами.

📅 Дедлайн подачи заявок: 8 апреля 2025 года.
📍 Подробности и форма заявки: https://clc.to/6wAHEg

Библиотека питониста #свежак
2👍2🎉2