6 слов, которые знакомы каждому Python-разработчику
Отложим кодинг и разомнём мозги с нашим небольшим кроссвордом. 💡
По горизонтали:
1. Функция, которая позволяет модифицировать поведение другой функции.
5. Область видимости переменных в коде.
По вертикали:
2. Расширение программы, которое обычно содержит библиотеки и файлы.
3. Способ выполнения асинхронных задач в Python.
4. Фреймворк для создания веб-приложений.
6. Пакетный менеджер для установки Python-библиотек.
Делитесь своими ответами в комментариях 👇
Прячем ответы под спойлер, даём шанс угадать всем.
Библиотека питониста #междусобойчик
Отложим кодинг и разомнём мозги с нашим небольшим кроссвордом. 💡
По горизонтали:
1. Функция, которая позволяет модифицировать поведение другой функции.
5. Область видимости переменных в коде.
По вертикали:
2. Расширение программы, которое обычно содержит библиотеки и файлы.
3. Способ выполнения асинхронных задач в Python.
4. Фреймворк для создания веб-приложений.
6. Пакетный менеджер для установки Python-библиотек.
Делитесь своими ответами в комментариях 👇
Прячем ответы под спойлер, даём шанс угадать всем.
Библиотека питониста #междусобойчик
👍7❤4🥱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 — как защитить прод от ошибок разработчиков.
Библиотека питониста #свежак
🚀 Релизы и инструменты:
— Django 5.2 RC1 — последний шанс протестировать новые функции перед релизом.
— Unvibe — новый Python-инструмент для генерации кода из unit-тестов.
— Marimo — переосмысление ноутбуков как переиспользуемых Python-программ.
🔬 Глубже в Python:
— Operationalizing Python — почему Python становится трудно поддерживаемым.
— Weakref в Python — руководство по слабым ссылкам.
📚 Обучение и лучшие практики:
— 100 самых популярных Python-докладов 2024 года.
— 5 листингов для лучшего понимания Python.
— Генерация синтетических данных в Python.
🔧 DevOps и безопасность:
— Иерархия контроля в DevOps — как защитить прод от ошибок разработчиков.
Библиотека питониста #свежак
👍4❤3🔥1
Forwarded from Библиотека собеса по Python | вопросы с собеседований
🤔 Почему не стоит использовать изменяемые объекты как параметры по-умолчанию?
В Python не рекомендуется использовать изменяемые объекты в качестве значений параметров по умолчанию по следующим причинам:
— Значения по умолчанию вычисляются один раз при определении функции, а не при каждом вызове.
— Если использовать изменяемый объект (список, словарь), то изменения в нем будут сохраняться между вызовами функции. Это может привести к неочевидному поведению и трудноуловимым ошибкам при многократном вызове функции.
В качестве альтернативы можно задавать значение по умолчанию как None, а в теле функции создавать новый изменяемый объект, если значение не передано.
Такой подход позволяет избежать «эффекта переноса» состояния между вызовами и делает код более понятным и предсказуемым.
Библиотека собеса по Python
— Значения по умолчанию вычисляются один раз при определении функции, а не при каждом вызове.
— Если использовать изменяемый объект (список, словарь), то изменения в нем будут сохраняться между вызовами функции. Это может привести к неочевидному поведению и трудноуловимым ошибкам при многократном вызове функции.
В качестве альтернативы можно задавать значение по умолчанию как None, а в теле функции создавать новый изменяемый объект, если значение не передано.
Такой подход позволяет избежать «эффекта переноса» состояния между вызовами и делает код более понятным и предсказуемым.
Библиотека собеса по Python
👍14❤8❤🔥2👏1
Кто такой современный разработчик в 2025 году? Актуальное исследование портрета IT-специалистов: зарплаты, технологии, специализации и демография разработчиков.
Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3👍2❤1🌚1
🏗 Управление памятью в Python: как это работает
Python сам выделяет и очищает память, чтобы вы не думали о байтах и указателях. Но иногда автоматике стоит помочь.
1. Python управляет памятью автоматически
Когда вы пишете
▪️ Тип данных (int, list, dict)
▪️ Счетчик ссылок (кто использует объект)
▪️ Значение (сами данные)
Такой подход удобен: нет «висячих указателей», не нужно вручную вызывать
2. Счетчик ссылок
Каждый объект в Python — как воздушный шарик. Пока его кто-то держит (есть ссылки), он остается. Если все нити отпущены — объект исчезает.
Как это работает:
💡Но есть нюансы: Python кэширует строки и мелкие числа (-5 до 256), поэтому их ссылки могут не изменяться.
3. Сборщик мусора
Если объекты ссылаются друг на друга, счетчик ссылок их не удалит. Например:
Такие объекты удаляет сборщик мусора (Garbage Collector, GC), используя алгоритм поколений:
🍼 Поколение 0 — новые объекты, проверяются чаще.
🧑💼 Поколение 1 — пережили одну проверку.
🦖 Поколение 2 — «старожилы», проверяются реже.
Управление GC:
💡 Совет: если у вас много циклических объектов, очищайте их вручную (gc.collect()).
4. Как оптимизировать память вручную
🔸 slots для уменьшения потребления памяти:
🔸 Генераторы вместо списков:
🔸 Массивы вместо списков:
🔸 Кэширование с lru_cache:
5. Как искать утечки памяти
🔸 Используем tracemalloc — показывает, где «утекает» память:
🔸 Визуализация с objgraph — рисует граф зависимостей:
📌 Подробнее про управление памятью в Python: https://clc.to/SNaUtg
Библиотека питониста #буст
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
Библиотека питониста #буст
👍25❤4❤🔥1
Готовишься к интервью? Мы собрали 10 каверзных вопросов, которые любят задавать тимлиды. Здесь нет банальных задач — только те, на которых спотыкаются 80% кандидатов. Проверь себя и узнай, готов ли ты к следующему собесу!
Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🔥1
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
💾 Как выбрать стратегию кэширования: разбор 7 популярных алгоритмов
Кешировать нужно с умом. И нет, LRU — не серебряная пуля.
В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии
Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.
➡️ Читать статью
🐸 Библиотека шарписта
Кешировать нужно с умом. И нет, LRU — не серебряная пуля.
В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии
Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
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
👍8❤2❤🔥1
🎧 Что послушать: обнаружение выбросов в данных с Python
В свежем выпуске Talk Python to Me обсуждают, как находить аномальные данные и использовать их для обнаружения мошенничества, неожиданных закономерностей и научных открытий.
Темы выпуска:
🎙️ Почему выбросы важны? Ошибки, инсайты и скрытые паттерны
🎙️ Методы обнаружения выбросов и их отличие от предсказания и кластеризации
🎙️ Практические кейсы и новые исследования
Если хотите научиться замечать аномалии и использовать их в своих проектах — этот выпуск для вас!
🔗 Слушать подкаст: https://clc.to/S3qK4Q
Библиотека питониста #буст
В свежем выпуске Talk Python to Me обсуждают, как находить аномальные данные и использовать их для обнаружения мошенничества, неожиданных закономерностей и научных открытий.
Темы выпуска:
🎙️ Почему выбросы важны? Ошибки, инсайты и скрытые паттерны
🎙️ Методы обнаружения выбросов и их отличие от предсказания и кластеризации
🎙️ Практические кейсы и новые исследования
Если хотите научиться замечать аномалии и использовать их в своих проектах — этот выпуск для вас!
🔗 Слушать подкаст: https://clc.to/S3qK4Q
Библиотека питониста #буст
❤2👍2
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
☸️ CKAD 2025. Самый свежий гайд по сдаче сертификации Certified Kubernetes Application Developer
CKAD стал более строгим к деталям — без системной подготовки можно завалить даже на банальных заданиях. Если хочется разобраться, что важно для получения сертификации — эта статья сэкономит часы.
➡️ Читать статью
🐸 Библиотека devops'a
CKAD стал более строгим к деталям — без системной подготовки можно завалить даже на банальных заданиях. Если хочется разобраться, что важно для получения сертификации — эта статья сэкономит часы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤🔥1❤1
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🤖 IT-выживание 2025: как не вылететь с рынка труда в эпоху LLM
В 2025-м айтишникам приходится несладко: старые скиллы уже не в цене, LLM наступают на пятки, а работодатели хотят все и сразу.
👍 Делимся инсайдами, как выжить в новой реальности и не потерять работу в эпоху тотальной оптимизации.
👉 Ссылка на статью: https://proglib.io/sh/zEruLHxYno
Библиотека дата-сайентиста
В 2025-м айтишникам приходится несладко: старые скиллы уже не в цене, LLM наступают на пятки, а работодатели хотят все и сразу.
👍 Делимся инсайдами, как выжить в новой реальности и не потерять работу в эпоху тотальной оптимизации.
👉 Ссылка на статью: https://proglib.io/sh/zEruLHxYno
Библиотека дата-сайентиста
👾4❤🔥2👍2🙏1💯1
🤓 Вопросы подписчиков: как перейти от Jupyter Notebooks к продакшн-коду?
Сегодня мы делимся вопросом от подписчика, который учился и разрабатывал проекты в Anaconda Notebooks, но стремится выйти на новый уровень и освоить написание продакшн-кода на Python.
💬 Он пишет:
✌️ Делитесь своими советами в комментариях!
P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.
Библиотека питониста #междусобойчик
Сегодня мы делимся вопросом от подписчика, который учился и разрабатывал проекты в Anaconda Notebooks, но стремится выйти на новый уровень и освоить написание продакшн-кода на Python.
Я начинал учиться и программировать в Anaconda Notebooks — это отличный инструмент для учебы и исследований. Однако в индустрии подход к коду совсем другой. Там он структурирован: используются субпапки, главный .py-файл объединяет всё, а развертывание, API и тесты разнесены по отдельным директориям. Это как готовое здание с надежным фундаментом и продуманной структурой, где все части взаимосвязаны.
Если вы работаете с Python в индустрии, не могли бы вы посоветовать, как перейти от стиля работы в ноутбуках к созданию продакшн-кода?
P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.
Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2👍2😁1🤔1
Модуль
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
👍15❤3🔥2
🚀 Открыт прием заявок на Google Summer of Code 2025
С 2005 года эта программа помогает студентам и начинающим разработчикам погрузиться в реальный мир программирования, работая над крутыми проектами.
📅 Дедлайн подачи заявок: 8 апреля 2025 года.
📍 Подробности и форма заявки: https://clc.to/6wAHEg
Библиотека питониста #свежак
С 2005 года эта программа помогает студентам и начинающим разработчикам погрузиться в реальный мир программирования, работая над крутыми проектами.
📅 Дедлайн подачи заявок: 8 апреля 2025 года.
📍 Подробности и форма заявки: https://clc.to/6wAHEg
Библиотека питониста #свежак
❤2👍2🎉2
Зимний режим OFF. Весна начинается с апгрейда.
Если чувствуешь, что за зиму навыки подзастыли — пора их разморозить.
📦 Включили весеннюю распродажу: скидка –35% на курсы до конца марта.
Выбирай направление и выходи из спячки:
— Алгоритмы и структуры данных — чтобы собеседования в Яндекс, Ozon и другие были как уровень easy
— Математика для Data Science — для тех, кто не хочет просто «жать на кнопки», а понимать, что под капотом
— Архитектуры и шаблоны — если хочется мыслить как senior и прокачать системное мышление
— Python, Frontend, основы IT — для тех, кто стартует путь в разработке
👾 Proglib Academy — это как старая добрая 8-битная игра, но вместо врагов — практические задачи и собеседования.
Мы просто упаковали сложное обучение в пиксельную обёртку, чтобы тебе было чуть веселее прокачиваться.
🧠 Отогревай мозги, прокачивай скиллы и хватай свой power-up до конца марта.
👉 Выбрать курс
Если чувствуешь, что за зиму навыки подзастыли — пора их разморозить.
📦 Включили весеннюю распродажу: скидка –35% на курсы до конца марта.
Выбирай направление и выходи из спячки:
— Алгоритмы и структуры данных — чтобы собеседования в Яндекс, Ozon и другие были как уровень easy
— Математика для Data Science — для тех, кто не хочет просто «жать на кнопки», а понимать, что под капотом
— Архитектуры и шаблоны — если хочется мыслить как senior и прокачать системное мышление
— Python, Frontend, основы IT — для тех, кто стартует путь в разработке
👾 Proglib Academy — это как старая добрая 8-битная игра, но вместо врагов — практические задачи и собеседования.
Мы просто упаковали сложное обучение в пиксельную обёртку, чтобы тебе было чуть веселее прокачиваться.
🧠 Отогревай мозги, прокачивай скиллы и хватай свой power-up до конца марта.
👉 Выбрать курс
❤2👍2
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🥇 Прокачай Power BI: создаем bullet-chart для наглядного сравнения данных
🎯 Устали от вопросов типа «Ну и что это значит для бизнеса?» после презентации отчетов?
Bullet-chart — мощный инструмент, который сразу показывает, насколько фактические показатели соответствуют целевым. В этой статье разберем, как правильно читать такой график и шаг за шагом создадим его в Power BI.
Готовы визуализировать данные так, чтобы они говорили сами за себя?
👍 Тогда поехали, ссылка на статью: https://proglib.io/sh/hcrRdAuqT5
Библиотека дата-сайентиста
🎯 Устали от вопросов типа «Ну и что это значит для бизнеса?» после презентации отчетов?
Bullet-chart — мощный инструмент, который сразу показывает, насколько фактические показатели соответствуют целевым. В этой статье разберем, как правильно читать такой график и шаг за шагом создадим его в Power BI.
Готовы визуализировать данные так, чтобы они говорили сами за себя?
👍 Тогда поехали, ссылка на статью: https://proglib.io/sh/hcrRdAuqT5
Библиотека дата-сайентиста
❤4👍2🎉1
Python — гибкий язык, и писать на нём можно в разных парадигмах. Но что удобнее, понятнее и «правильнее»?
class NumberProcessor:
def __init__(self, numbers):
self.numbers = numbers
def filter_even(self):
self.numbers = [n for n in self.numbers if n % 2 == 0]
return self
def square(self):
self.numbers = [n**2 for n in self.numbers]
return self
def get_result(self):
return self.numbers
processor = NumberProcessor([1, 2, 3, 4, 5, 6])
result = processor.filter_even().square().get_result()
print(result) # [4, 16, 36]
from functools import reduce
def filter_even(numbers):
return list(filter(lambda x: x % 2 == 0, numbers))
def square(numbers):
return list(map(lambda x: x**2, numbers))
numbers = [1, 2, 3, 4, 5, 6]
result = square(filter_even(numbers))
print(result) # [4, 16, 36]
numbers = [1, 2, 3, 4, 5, 6]
result = [n**2 for n in numbers if n % 2 == 0]
print(result) # [4, 16, 36]
Какой стиль ближе? Выбирайте свой лагерь и аргументируйте в комментах! 👇
👍 ООП — потому что читаемо и поддерживаемо
❤️ Функциональный стиль — минимум багов и максимум эффективности
🔥 Скрипты — зачем усложнять, если можно просто?
Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤43👍29🔥15🥰2👏1
🚀 Релизы и инструменты:
— IPython 9— новые возможности интерактивной оболочки
— Mesop 1.0 — новый UI-фреймворк на Python для веб-приложений
— Flet — фреймворк для кроссплатформенных мобильных и десктопных приложений
🔬 Глубже в Python:
— Removing deprecated config format? Что может пойти не так? — удаление устаревших конфигураций в setuptools вызвало проблемы (но уже откатили)
— Django Template Components — новый подход к компонентам в Django
— Smoke-тестирование Django Admin — защита от неожиданных ошибок
📚 Обучение и лучшие практики:
— Как уменьшить размер Docker-образа на 80%
— Poetry, Rye или UV? — что выбрать для управления зависимостями
— Как построить Hot Module Replacement в Python — обновляем код без перезапуска
📢 Анонсы и события:
— Google Summer of Code 2025 — открыт приём заявок
Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3