Программистика
Yopiq kanal
Лучший канал про python Ссылка для друга: https://t.me/+Ai6ughKtf5g2ZmFi Купить рекламу: https://telega.in/c/+Ai6ughKtf5g2ZmFi Админ: @JeyRahol По рекламе: @ReivuManager
Ko'proq ko'rsatish5 801
Obunachilar
+3224 soatlar
+187 kun
-4030 kun
Postlar arxiv
5 801
3 дня. 60 откликов. 1 оффер.
Очень интересный кейс произошёл у команды Софи — ии-ассистента для поиска работы.
К ним в поддержку написала девушка, которая отписалась от продукта ещё месяц назад:
«Мне прислали оффер!»Начали разбираться — оказывается, она пользовалась только 3 тестовыми днями. То есть за 3 дня ии-ассистент успел сделать 60 откликов. Потом она отписалась. А уже позже — из этих откликов её позвали на интервью, и одно из них привело к офферу.
«Оффер с той вакансии, куда я сама никогда бы не откликнулась»Изначально Аня отменила подписку, так как было дорого. Ребята честно спросили у Ани, считает ли она теперь, что подписка стоит своих денег — и получили утвердительный ответ. В следующий раз доступ в Софи откроется 22 сентября. Если хочешь получить 3 дня бесплатного доступа - подписывайся на этот канал, все анонсы будут там.
5 801
Weekend Offer ML*: быстрый найм в Яндекс
Открыли регистрацию на онлайн-мероприятие для ML и DL-специалистов. Мы ищем инженеров с опытом от 2 лет в областях NLP, CV, RecSys и Classic ML.
Как всё устроено:
✅ До 4 сентября — регистрация на сайте.
✅ 12 сентября — две технические секции онлайн.
✅ 13 сентября — финальные интервью со знакомством с командами.
Ждём вас! Подробности и форма регистрации — на сайте.
Зарегистрироваться
#реклама 16+
yandex.ru
О рекламодателе
5 801
🖥 FastSQLA — это асинхронное расширение для SQLAlchemy версии 2.0 и выше, разработанное для интеграции с FastAPI! Оно предоставляет готовые шаблоны, поддержку SQLModel и встроенную пагинацию, упрощая настройку и управление асинхронными соединениями с реляционными базами данных.
🐱 Ссылка на GitHub
Программистика|| #Репозиторий
5 801
🧠 Отгадка: что выведет этот код?
a = [1, 2, 3]
b = a
a = a + [4]
print(b)
✅ Правильный ответ: 1. `[1, 2, 3]`
📖 Почему так происходит?
В Python оператор + для списков создаёт новый список, а не изменяет существующий.
Разберём по шагам:
1. a = [1, 2, 3] — создаётся список, a указывает на него.
2. b = a — b указывает на тот же список.
3. a = a + [4] — выражение a + [4] создаёт новый список [1, 2, 3, 4]. Затем a переназначается на этот новый объект.
4. b всё ещё указывает на старый список [1, 2, 3] и не изменился.
Если бы мы написали a += [4] (или a.append(4)), то изменили бы исходный список, и ответ был бы [1, 2, 3, 4]. Но здесь — создание нового объекта, поэтому b остался неизменным.
Ключевой момент: + возвращает новый объект, += или append() меняют существующий.
Ставьте 🔥, если было полезно!
Программистика || #quiz5 801
🧠 Загадка на ночь: что выведет этот код?
a = [1, 2, 3]
b = a
a = a + [4]
print(b)
Варианты:
1. [1, 2, 3]
2. [1, 2, 3, 4]
3. [4]
4. Ошибка
Пиши свой вариант в комментарии! Ответ и разбор — через пару часов 🔥
Программистика || #quiz5 801
👨💻 Работа с памятью в Python: как экономить, не утекать и не ломать голову
В Python принято не думать о памяти. Вроде бы есть сборщик мусора, всё автоматически — живи и радуйся. Но когда ваш сервис начинает жрать 8 ГБ на ровном месте, а объекты, которые давно не нужны, почему-то не удаляются, становится не до шуток. Разбираемся с тремя инструментами, которые помогут держать память под контролем:
__slots__, weakref и gc.
🧱 Проблема: почему память заканчивается, даже если объектов уже нет
В Python память освобождается двумя способами:
1. Подсчёт ссылок (reference counting) — удаляет объект, когда счётчик ссылок падает до нуля. Работает мгновенно.
2. Циклический сборщик мусора (GC) — периодически ищет группы объектов, которые ссылаются друг на друга, но никому больше не нужны.
Но есть ситуации, когда память всё равно утекает:
🔴 Вы храните объекты в глобальных списках или кэшах. 🔴 Циклические ссылки не дают объектам удалиться. 🔴 Вы создаёте миллионы объектов с __dict__, и память раздувается. 🔴 Слабые ссылки не используются, хотя могли бы спасти.Разберём три инструмента, которые решают эти проблемы. 📦 1. `
__slots__` — экономия памяти для миллионов объектов
По умолчанию каждый экземпляр класса в Python содержит __dict__ — словарь для хранения атрибутов. Это удобно, но дорого: словарь занимает ~56 байт плюс сами атрибуты. Для 1 млн объектов разница может составлять сотни мегабайт.
__slots__ отключает __dict__ и заменяет его на дескрипторы. Объект становится компактнее (как C-структура).
class Point:
__slots__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(1, 2)
p.z = 3 # ❌ AttributeError: 'Point' object has no attribute 'z'
Замер памяти:
import sys
class WithoutSlots:
def __init__(self, x, y):
self.x = x
self.y = y
class WithSlots:
__slots__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
obj1 = WithoutSlots(1, 2)
obj2 = WithSlots(1, 2)
print(sys.getsizeof(obj1)) # ~56 байт + __dict__ (~56) = 112 байт
print(sys.getsizeof(obj2)) # 48 байт
Когда использовать `__slots__`:
🟢 Миллионы объектов с фиксированным набором атрибутов.
🟢 Классы-структуры (Data Transfer Objects, точки, векторы).
❌ Для 99% проектов — не нужно. Оптимизируйте только по факту.
Наследование:
class Base:
__slots__ = ('id',)
class Child(Base):
__slots__ = ('name', 'age') # id + name + age
def __init__(self, id, name, age):
self.id = id
self.name = name
self.age = age
Нюанс: __slots__ не наследуется автоматически. Если дочерний класс не переопределяет __slots__, он получит __dict__ и потеряет экономию.
🔗 2. `weakref` — ссылки, которые не мешают сборщику мусора
Вы когда-нибудь создавали кэш, который должен хранить объекты, но не мешать им удаляться? Или писали Observer, но объекты не удалялись, потому что их держал список наблюдателей? Это классическая проблема: сильные ссылки держат объекты живыми.
weakref — это слабая ссылка, которая не учитывается сборщиком мусора. Если на объект есть только слабые ссылки, он может быть удалён.
import weakref
import gc
class HeavyObject:
def __del__(self):
print("Объект удалён")
obj = HeavyObject()
weak = weakref.ref(obj)
print(weak()) # <__main__.HeavyObject object at 0x...>
del obj
gc.collect()
print(weak()) # None
Где пригодится:
🟢 Кэши — объекты могут быть удалены, если память нужна. 🟢 Наблюдатели (Observer) — слушатели удаляются, когда на них больше никто не ссылается. 🟢 Обратные ссылки в деревьях — родитель держит сильную ссылку на детей, а дети — слабую на родителей.Типы слабых ссылок: 🔴
weakref.ref(obj) — базовая слабая ссылка.
🔴 weakref.WeakKeyDictionary — словарь, где ключи — слабые ссылки.
🔴 weakref.WeakValueDictionary — словарь, где значения — слабые ссылки.
🔴 weakref.WeakSet — множество слабых ссылок.
Пример с WeakValueDictionary:
import weakref
class Cache:
def __init__(self):
self._data = weakref.WeakValueDictionary()
def set(self, key, value):
self._data[key] = value
def get(self, key):
return self._data.get(key)
cache = Cache()
obj = HeavyObject()
cache.set('key', obj)
print(cache.get('key')) # <HeavyObject object at ...>
del obj
print(cache.get('key')) # None
Ограничения:
🔴 Не все объекты поддерживают слабые ссылки (числа, строки, кортежи без изменяемых элементов).
🔴 При использовании __slots__ нужно добавить '__weakref__' в слоты.
🔴 Проверяйте результат вызова слабой ссылки на None — объект мог быть удалён.
🧹 3. `gc` — ручное управление циклическим сборщиком мусора
В Python есть автоматический сборщик мусора для циклических ссылок. Обычно он работает незаметно, но иногда нужно вмешаться.
import gc
# Включить/выключить сборку
gc.enable()
gc.disable()
# Запустить вручную
gc.collect()
# Проверить пороги срабатывания
print(gc.get_threshold()) # (700, 10, 10)
# Посмотреть количество объектов в поколениях
print(gc.get_count())
Когда может понадобиться:
🟢 Вы знаете, что создаётся много циклических ссылок (например, графы, деревья с обратными ссылками).
🟢 В долгоживущих процессах — периодический вызов gc.collect() может помочь.
🟢 В тестах — чтобы проверить, что объекты действительно удаляются.
Пример с циклической ссылкой:
class Node:
def __init__(self):
self.parent = None
a = Node()
b = Node()
a.parent = b
b.parent = a
del a, b
# Объекты зависли в циклической ссылке
gc.collect() # Удалит их
Модуль `gc` для отладки утечек:
import gc
import tracemalloc
# Включить трассировку
tracemalloc.start()
# Получить список всех объектов
objects = gc.get_objects()
# Найти объекты определённого типа
import pprint
pprint.pprint([obj for obj in gc.get_objects() if isinstance(obj, dict)])
⚠️ Ловушки и частые ошибки
1. Использовать `__slots__` везде — не нужно, усложняет код.
2. Забыть про `__weakref__` в `__slots__` — слабые ссылки не будут работать.
3. Проверять слабые ссылки без `if` — при доступе к удалённому объекту вернётся None.
4. Отключать `gc` без необходимости — приведёт к утечкам.
5. Игнорировать циклические ссылки — в сложных структурах они могут накапливаться.
💡 Запомни:
🟢 __slots__ — экономия памяти для миллионов объектов.
🟢 weakref — ссылки, которые не мешают удалять объекты.
🟢 gc — ручное управление циклическим сборщиком мусора.
🟢 Не оптимизируйте память без измерений.
🟢 Используйте tracemalloc и gc.get_objects() для отладки утечек.
Программистика || #Статья5 801
Регистрируйтесь на Yandex Scale 2026
Главная конференция Yandex Cloud.
Узнайте о сервисах, которые меняют ваш бизнес.
4 офлайн-трека (AI, Infra + DevTools, Data, Security), онлайн-трек Deep Tech, воркшопы по ИИ и интерактивы. Подробнее о программе читайте в карточках🗒
📅24 сентября
🚗Москва + 💻онлайн
Участие бесплатное!
Зарегистрироваться
#реклама 16+
scale.yandex.cloud
О рекламодателе
5 801
1000+ свежих IT-вакансий каждый месяц в одном месте 🤘
Пока другие листают hh — мы ищем вакансии по всему рынку: каналы, сайты компаний, стартапы и закрытые источники.
Всё, что сложно найти руками — уже собрано внутри⬇️
IT Россия
IT СНГ
Стажировки
Digital
Международка
Удалёнка
Python
Бигтех
Дизайн
QA
Джунам
Frontend
Аналитика
DevOps
Не с HH
Автоотклики на вакансии
5 801
Битрикс24 представил Коворк/Код
Ключевое:
• Помнит рабочий контекст месяцами благодаря технологии Радиант: связывает задачи, сделки, переписку и файлы в единую картину, замечает риски и подсказывает следующий шаг — не нужно каждый раз объяснять, о каком клиенте или проекте речь;
• Выполняет несколько задач параллельно — помогает ускорить рабочий процесс в разы;
• В режиме Коворк выполняет рабочие поручения, в режиме Код создает приложения под ваши задачи;
• Работает только с тем, к чему вы сами дали доступ;
• Стабильно доступен в России, без зарубежных карт и посредников при оплате;
• В основе — модель BitrixGPT 5.6 Agent 1M (контекст на 1M токенов);
• Доступно для macOS, Windows и Linux.
Ранний доступ к Битрикс24 Коворк/Код уже открыт.
Получить предложение
#реклама 16+
cowork.bitrix24.ru
О рекламодателе
5 801
Два молодых парня, Никита и Роберт в августе запустили мега полезный проект для общества.
Они создали сообщество, в котором объединили такие темы:
1. Программирование / Фриланс / ИИ
2. Кибербезопасность / VPN
3. Мейдиа / Криптовалюта / Саморазвитие
... полный список тут 👈
В чате я познакомился с Даней, администратором Битрикс, выручка которого составляет 3+ млн в год, с Александром, который 6 лет работает в сфере кибербезопасности и с Багой, 21-летним GoLang разработчиком из WB 😉
Что меня удивило, так это кол-во слитых курсов (50+), начиная от Udemy, заканчивая такими школами как BEEGEEK и Stepik.
В сообществе очень приятная атмосфера, все ребята поддерживают друг друга и делятся своим опытом.
Хочешь присоединится к тусовке заряженных ребят?👇
→ Войти в сообщество
5 801
🖥 PyQuery — это библиотека для парсинга HTML и XML с синтаксисом jQuery. Позволяет извлекать данные, манипулировать элементами и обходить DOM-дерево с помощью CSS-селекторов, как в браузере. Построена на lxml — быстро и эффективно.
Она предоставляет удобный API для выборки элементов с помощью CSS-селекторов и их последующей обработки. PyQuery построена на основе lxml, что обеспечивает быструю и эффективную работу с XML и HTML.🐱 Ссылка на GitHub Программистика|| #Репозиторий
5 801
Так вот ты какое, летнее настроение
В Т-Шоп завезли новую фестивальную коллекцию. Собрали дизайнерские вещи, которые точно пригодятся:
— футболки;
— бандану;
— плед;
— веер и даже подвеску-открывашку.
Идеально для путешествий, пикников и отдыха. Осталось выбрать, что первым отправится в корзину
Посмотреть каталог
#реклама
tbank.ru
О рекламодателе
5 801
⚡️ `any` и `all`: проверяй условия без циклов
Нужно проверить, все ли элементы списка соответствуют условию? Или хотя бы один? Вместо цикла с
break используйте any() и all().
❌ Было (цикл с флагом):
has_even = False
for x in numbers:
if x % 2 == 0:
has_even = True
break
all_positive = True
for x in numbers:
if x <= 0:
all_positive = False
break
✅ Стало (одна строка):
has_even = any(x % 2 == 0 for x in numbers)
all_positive = all(x > 0 for x in numbers)
any() возвращает True, если хотя бы один элемент истинен. all() — только если все элементы истинны. Генератор внутри ленивый — вычисляется до первого True (для any) или первого False (для all).
Программистика || #tips5 801
Бесплатный курс: веб-дизайн, графика, интерфейсы
Научись создавать дизайн сайтов и приложений, инфографику для карточек на маркетплейсах и работать в Figma!
Студенты курса в среднем зарабатывают от 68 000 ₽ уже во время обучения💰
Этот курс для тебя, если ты:
✅ мечтаешь о новой профессии, но не знаешь, с чего начать;
✅ чувствуешь, что хочешь большего — свободы, самореализации, творчества;
✅ полный новичок и хочешь систему, а не хаос;
✅ хочешь начать зарабатывать удалённо.
Зарегистрироваться
#реклама 16+
ydaev.ru
О рекламодателе
5 801
Что общего у аналитика с зарплатой 200к и джуна, который застрял на 40к?
Первый не переставал учиться — просто делал это бесплатно и по делу.
Lab IT — канал, где каждый день выкладывают платные IT-курсы, роадмапы и практику даром. Python, SQL, ML, DevOps, дизайн — выбирай направление и качай.
Разница между «хочу расти» и «вырос» — одна подписка.
➡️ https://t.me/+Mnoq6ke8TlxkNzFi
5 801
🎥 FastAPI за 3 часа: от старта до продакшена
FastAPI — один из самых быстрых и современных веб-фреймворков для Python. Если вы уже знакомы с синтаксисом языка и хотите освоить создание мощных API, этот 3-часовой курс для вас. Автор разбирает всё на практике: от основ до реальных примеров, с учётом современных подходов 2026 года.
📱 ПервоисточникПрограммистика|| #video
