fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

Программистика

Программистика

کانال بسته

Лучший канал про python Ссылка для друга: https://t.me/+Ai6ughKtf5g2ZmFi Купить рекламу: https://telega.in/c/+Ai6ughKtf5g2ZmFi Админ: @JeyRahol По рекламе: @ReivuManager

نمایش بیشتر
5 768
مشترکین
-324 ساعت
-137 روز
-6530 روز
آرشیو پست ها
Что будет работать в рекламе завтра? Ответ ищем вместе на REKONFA 2026. 15 октября соберёмся в Москве и онлайн, чтобы обсудит
Что будет работать в рекламе завтра? Ответ ищем вместе на REKONFA 2026. 15 октября соберёмся в Москве и онлайн, чтобы обсудить новые технологии Яндекс Рекламы, продуктовые запуски, тренды рынка, исследования и реальные кейсы. В программе — выступления экспертов и возможность поговорить с продуктовыми командами Яндекс Рекламы о своих задачах. А вне сцены вас ждут коворкинг, фотозоны и форматы для новых знакомств. Участвовать можно в Москве на ВТБ Арене или онлайн. Регистрация бесплатная. Зарегистрироваться #реклама 18+ ya.rekonfa.ru О рекламодателе

🛞5 мифов про асинхронность в Python, в которые верят разработчики
📱 Первоисточник
Программистика|| #video

YaC/e 2026: учеба и карьера в эпоху ИИ Разберемся, как учиться так, чтобы знания не устаревали вместе с развитием ИИ, как вст
YaC/e 2026: учеба и карьера в эпоху ИИ Разберемся, как учиться так, чтобы знания не устаревали вместе с развитием ИИ, как встроить нейросети в учёбу, чтобы получить качественный результат. Бесплатная онлайн-конференция Яндекса 30 сентября. Регистрируйтесь Узнать больше #реклама 16+ yace.yandex.ru О рекламодателе

🧠 Иллюзия обучения: почему 15 курсов не сделали тебя программистом Вы прошли 15 курсов по Python. Посмотрели 100 роликов про FastAPI. Прочитали десятки статей на Хабре. А когда нужно написать что-то с нуля - ступор. Почему? Потому что смотреть - не значит уметь. Мозг получает дофамин от «я понял», но не получает навык. Настоящее обучение начинается там, где заканчивается комфорт: когда вы пишете код, который не работает, и ищете причину три часа. 🧱 Почему так происходит Мозг ленив. Ему проще смотреть, чем делать. Когда вы смотрите урок, вы не напрягаетесь, не ошибаетесь, не чувствуете фрустрацию. Дофамин выделяется, и создаётся ощущение прогресса. Но навык не формируется. Навык формируется только через:
🟢 повторение 🟢 ошибки 🟢 исправление ошибок 🟢 повторение снова
Курсы и видео дают информацию, но не дают опыт. А без опыта информация забывается через неделю. 📌 Правило: на каждый час теории - минимум два часа практики Если после курса вы не написали свой проект - вы его не прошли, вы его просмотрели. Что значит «написать свой проект»? Это не повторение кода из урока. Это когда вы берёте тему и делаете что-то своё:
- парсер для сайта, который вам интересен - телеграм-бота для своих нужд - CLI-утилиту для автоматизации рутины - игру, пусть даже простую
Главное - вы принимаете решения, ошибаетесь, гуглите, снова ошибаетесь и находите решение. 🔍 Как понять, что вы действительно учитесь, а не создаёте иллюзию Задайте себе три вопроса после каждого урока или статьи:
1. Могу ли я объяснить эту тему вслух простыми словами? 2. Могу ли я написать работающий код на эту тему без подсказок? 3. Смогу ли я найти и исправить ошибку в этом коде?
Если хотя бы на один вопрос ответ «нет» - вы ещё не освоили тему. Вернитесь к практике. 🛠 Что делать прямо сейчас 1. Выберите один курс и пройдите его до конца, выполняя все практические задания. 2. После каждого урока пишите мини-проект на 20-30 строк, используя новую тему. 3. Ведите дневник обучения: что изучили, что получилось, что нет. 4. Публикуйте код на GitHub - даже если он стыдный. Через год вы увидите прогресс. 5. Найдите ментора или друга, который сможет указать на ошибки. 💡 Запомни: 🟢 Просмотр курсов - это не обучение, а развлечение. 🟢 Навык растёт только через реальные проекты и ошибки. 🟢 Правило 1:2 - час теории, два часа практики. 🟢 Если не можешь написать код без подсказки - ты не выучил тему. 🟢 Перестаньте коллекционировать курсы. Начните делать. Программистика|| #Статья

🔧 Библиотека Python: Sayer Sayer — это современный асинхронный фреймворк для создания CLI-приложений. Он создан для разработ
🔧 Библиотека Python: Sayer Sayer — это современный асинхронный фреймворк для создания CLI-приложений. Он создан для разработчиков, которым нужно больше структуры и мощности при меньшем количестве шаблонного кода. Sayer масштабируется от простых скриптов до корпоративных CLI-приложений, поддерживает асинхронность «из коробки», метаданные параметров через Option, Argument и Env, а также встроенную систему middleware и управление состоянием приложения. Интерфейс командной строки может быть обогащён с помощью интеграции с rich. ✔️ Установка:
pip install sayer
🐱 Ссылка на репозиторий Программистика|| #Library

Python для профи. Интерпретаторы, эмуляторы, графика и машинное обучение Благодаря семи проектам на Python, представленным в
Python для профи. Интерпретаторы, эмуляторы, графика и машинное обучение
Благодаря семи проектам на Python, представленным в этой книге, вы сможете получить представление о некоторых фундаментальных принципах в области информатики. В каждой главе автор пошагово описывает завершенный проект, раскрывающий один из конкретных аспектов программирования, не прибегая к сложной математике и запутанному коду. Издание адресовано программистам на языке Python среднего и продвинутого уровней, желающим закрепить знания и заполнить возможные пробелы в образовании.
Программистика || #Книги

🔄 Безопасный арсенал практических инструкций, курсов и инструментов — только то, что прокачивает навыки. 🥷 OSINT 🤔 Хакинг & ИБ 🖥 Курсы & GitHub 📱 Python 👩‍💻 Linux & Bash 💼 Фриланс и работа в IT 📱 Общий архив 📂 Книги, курсы, инструкции по ИБ, Python и фриланс на удаленке.

🧠 Загадка на ночь: что выведет этот код?
class A:
    def __init__(self):
        print("A", end=" ")

class B(A):
    def __init__(self):
        print("B", end=" ")
        super().__init__()

class C(A):
    def __init__(self):
        print("C", end=" ")
        super().__init__()

class D(B, C):
    def __init__(self):
        print("D", end=" ")
        super().__init__()

D()
Варианты: 1. D B C A 2. D B A C 3. D C B A 4. D B A Пиши свой вариант в комментарии! Ответ и разбор — через пару часов 🔥 Программистика|| #quiz

⚙️ Библиотека Python: Dynaconf Dynaconf — это гибкая библиотека для управления настройками приложения. Она поддерживает множе
⚙️ Библиотека Python: Dynaconf Dynaconf — это гибкая библиотека для управления настройками приложения. Она поддерживает множество форматов (.toml, .yaml, .json, .ini, .env), автоматически подхватывает переменные окружения и позволяет легко переключаться между средами (development, production). Вдохновлена принципами 12-factor приложений и избавляет от хаоса с конфигами. ✔️ Установка:
pip install dynaconf
🐱 Ссылка на репозиторий Программистика|| #Library

👩‍💻 9 ошибок, которые выдают Junior Backend разработчика Джуниор — это не тот, кто мало знает, а тот, кто ещё не научился думать как инженер. Ошибки в коде — это полбеды. Ошибки в подходе к работе — вот что действительно выдаёт новичка. Разбираем 9 классических промахов, которые мешают джунам расти и проходить собеседования. 📱 Первоисточник Программистика|| #video

📁 `__init__.py` — что скрывается за этим файлом и зачем он нужен (не только чтобы сделать папку пакетом) Каждый Python-разработчик видел этот файл в папках проектов. Многие думают, что __init__.py — это просто маркер, который говорит Python: «эта папка — пакет». И оставляют его пустым. Но это лишь вершина айсберга. За ним скрывается мощный механизм управления импортами, инициализацией пакетов и даже экспортом API. Разбираемся, что умеет этот маленький файл. 🧱 Что делает `__init__.py` 1. Делает директорию пакетом До Python 3.3 __init__.py был обязателен для того, чтобы Python воспринимал папку как пакет. Сейчас это не строго обязательно (работают namespace-пакеты), но оставлять файл всё равно хорошая практика: он явно показывает, что папка — часть проекта. 2. Выполняется при первом импорте пакета Когда вы пишете import mypackage, Python сначала выполняет код из mypackage/__init__.py. Это даёт возможность выполнить инициализацию: настроить логирование, загрузить конфиги, установить соединение с БД — всё, что нужно сделать до работы с модулями пакета. 3. Формирует публичный интерфейс пакета Через __init__.py можно определить, какие объекты будут доступны при импорте пакета. Это позволяет скрыть внутреннюю структуру и предоставить пользователю удобный API. 📦 Что можно писать внутри `__init__.py` 1. Импорты подмодулей для удобного доступа Вместо того чтобы писать: ```python from mypackage.module import MyClass from mypackage.submodule import helper ``` Вы можете сделать в __init__.py: ```python from .module import MyClass from .submodule import helper ``` И тогда пользователь сможет писать: ```python from mypackage import MyClass, helper ``` Это делает код чище и скрывает внутреннюю структуру пакета. 2. `__all__` для явного экспорта Если вы используете from mypackage import *, Python ищет список __all__ в __init__.py. Определив его, вы контролируете, что попадёт в глобальное пространство имён при таком импорте. ```python all = ['MyClass', 'helper'] ``` Без __all__ import * импортирует всё, что не начинается с подчёркивания, что может быть нежелательно. 3. Инициализация пакета Код, который нужно выполнить один раз при первом импорте: ```python import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(name) ``` Это удобно для настройки логирования, загрузки конфигурации или проверки окружения. 4. Версионирование Вы можете определить __version__ в __init__.py, чтобы версия пакета была доступна как атрибут. ```python version = "1.0.0" ``` Тогда пользователь сможет проверить версию через mypackage.__version__. 5. Управление подпакетами Можно динамически импортировать подпакеты или модули в зависимости от условий (платформа, переменные окружения). 🧪 Пример: организация пакета для работы с API Допустим, у вас есть пакет api_client со структурой:
api_client/
├── __init__.py
├── client.py
├── auth.py
├── models.py
└── utils.py
В __init__.py вы можете сделать:
from .client import APIClient
from .auth import authenticate
from .models import User, Product
from .utils import validate_response

__all__ = ['APIClient', 'authenticate', 'User', 'Product', 'validate_response']
Тогда внешний код будет использовать пакет так:
from api_client import APIClient, authenticate
client = APIClient()
authenticate(client)
Внутренняя структура скрыта, а пользователь получает чистый интерфейс. ⚠️ Ловушки и частые ошибки 1. Слишком много кода в `__init__.py` Всё, что выполняется при импорте, замедляет загрузку пакета. Оставляйте только инициализацию и импорты. Тяжёлые вычисления или загрузку данных выносите в отдельные функции. 2. Циклические импорты Если в __init__.py вы импортируете модули, которые в свою очередь импортируют что-то из __init__.py, может возникнуть циклическая зависимость. Решение — выносить логику в отдельные модули и избегать сложных взаимных импортов. 3. Путаница с относительными импортами Используйте явные относительные импорты (.module, ..subpackage), чтобы избежать конфликтов с глобальными модулями. 4. Игнорирование `__all__` при `import *` Без __all__ import * может принести лишние объекты, включая приватные (_internal). Всегда определяйте __all__, если планируете использовать import *. 5. Создание namespace-пакетов без `__init__.py` Если вы намеренно используете namespace-пакеты (когда один пакет разбит на несколько частей), пропускайте __init__.py. Но если вы не уверены, лучше оставить файл. 💡 Запомни: 🟢 __init__.py — не просто маркер, а точка входа в пакет. 🟢 Используйте его для упрощения импортов через from .module import .... 🟢 Определяйте __all__ для контроля публичного API. 🟢 Выполняйте инициализацию, но не перегружайте файл тяжёлым кодом. 🟢 Версионируйте пакет через __version__. 🟢 Помните про циклические импорты и относительные пути. Понимание устройства __init__.py делает вас не просто пользователем библиотек, а разработчиком, который умеет проектировать свои собственные пакеты чисто и удобно. Программистика|| #Статья

🧠 Отгадка: что выведет этот код?
s1 = "hello"
s2 = "hello"
s3 = "".join(["h", "e", "l", "l", "o"])
print(s1 is s2, s1 is s3)
✅ Правильный ответ: 2. `True False` 📖 Почему так происходит? - s1 = "hello" и s2 = "hello" — это строковые литералы. Python интернирует короткие строки (состоящие из букв, цифр и подчёркиваний) для экономии памяти. Поэтому обе переменные указывают на один и тот же объект в памяти. s1 is s2 → True. - s3 = "".join(["h", "e", "l", "l", "o"]) — строка создаётся динамически во время выполнения. Даже если содержимое совпадает, интерпретатор не интернирует её автоматически (если только не используется sys.intern()). Поэтому s3 — это новый объект. s1 is s3 → False. Ключевой момент: - is проверяет идентичность объектов (адреса в памяти), а не значения. - Литералы могут быть интернированы, а динамически созданные строки — нет. Ставьте 🔥, если было полезно! Программистика || #quiz

−16% на IT-профессию с ИИ-навыками до 17 сентября Освойте профессию и ИИ-навыки, которые уже требует рынок. Начните бесплатно
−16% на IT-профессию с ИИ-навыками до 17 сентября Освойте профессию и ИИ-навыки, которые уже требует рынок. Начните бесплатно до 17 сентября и учитесь со скидкой. Яндекс Практикум. Учим профессиям и навыкам с ИИ, чтобы вы не застряли в прошлом Узнать больше #реклама 16+ practicum.yandex.ru О рекламодателе

👨‍💻Гайд «Как стать программистом». А нейронки? А рынок вакансий? А можно еще?
Путь в IT в 2026 году — это не просто выучить Python и пойти на собеседование. Рынок изменился: нейросети пишут код, джунов стало больше, а требования — выше. Как не потеряться и построить карьеру сейчас — в новом большом гайде.
Программистика|| #video

🚀 Память в Python: `__slots__`, `weakref` и `gc` — когда экономить, а когда не мешать В Python принято не думать о памяти. Вроде бы есть сборщик мусора, всё автоматически — живи и радуйся. Но когда ваш сервис начинает жрать 8 ГБ на ровном месте, а объекты, которые давно не нужны, почему-то не удаляются, становится не до шуток. Разбираемся с тремя инструментами, которые помогут держать память под контролем: __slots__, weakref и gc. 🧱 Проблема: почему память заканчивается, даже если объекты уже не нужны В Python память освобождается двумя способами:
- Подсчёт ссылок — удаляет объект, когда счётчик падает до нуля. Работает мгновенно. - Циклический сборщик мусора (GC) — периодически ищет группы объектов, которые ссылаются друг на друга, но никому больше не нужны.
Но есть ситуации, когда память всё равно утекает:
- Вы храните объекты в глобальных списках или кэшах. - Циклические ссылки не дают объектам удалиться. - Вы создаёте миллионы объектов с __dict__, и память раздувается. - Слабые ссылки не используются, хотя могли бы спасти.
📦 `__slots__` — когда миллионы объектов, а памяти жалко По умолчанию каждый экземпляр класса содержит __dict__ — словарь для хранения атрибутов. Это удобно, но дорого: словарь занимает ~56 байт плюс сами атрибуты. Для 1 млн объектов разница — сотни мегабайт. __slots__ отключает __dict__ и заменяет его на дескрипторы. Объект становится компактнее.
class Point:
    __slots__ = ('x', 'y')
    def __init__(self, x, y):
        self.x = x
        self.y = y

p = Point(1, 2)
p.z = 3  # ❌ AttributeError
Замер памяти:
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

print(sys.getsizeof(WithoutSlots(1, 2)))  # ~112 байт
print(sys.getsizeof(WithSlots(1, 2)))     # ~48 байт
🟢 Когда использовать:
- Миллионы объектов с фиксированными атрибутами. - Классы-структуры (точки, векторы, DTO). ❌ Не для 99% проектов — оптимизируйте только по факту.
🔗 `weakref` — ссылки, которые не мешают сборщику Вы когда-нибудь создавали кэш, который должен хранить объекты, но не мешать им удаляться? Или писали Observer, но объекты не удалялись, потому что их держал список наблюдателей? Сильные ссылки держат объекты живыми. weakref — это слабая ссылка, которая не учитывается сборщиком мусора. Если на объект есть только слабые ссылки, он может быть удалён.
import weakref

class HeavyObject:
    def __del__(self):
        print("Объект удалён")

obj = HeavyObject()
weak = weakref.ref(obj)

del obj
print(weak())  # None
Где пригодится: - Кэши (объекты удаляются, если память нужна). - Наблюдатели (слушатели удаляются, когда на них никто не ссылается). - Обратные ссылки в деревьях. Типы слабых ссылок: - weakref.ref(obj) — базовая. - WeakKeyDictionary — ключи — слабые ссылки. - WeakValueDictionary — значения — слабые ссылки. - WeakSet — множество слабых ссылок.
cache = weakref.WeakValueDictionary()
obj = HeavyObject()
cache['key'] = obj
del obj
print(cache.get('key'))  # None
⚠️ Ограничения: - Не все объекты поддерживают слабые ссылки (числа, строки, кортежи без изменяемых элементов). - При __slots__ нужно добавить '__weakref__'. 🧹 `gc` — ручной контроль над циклическим сборщиком В Python есть автоматический сборщик мусора для циклических ссылок. Обычно он работает незаметно, но иногда нужно вмешаться.
import gc

# Запустить вручную
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()  # Удалит циклическую ссылку
⚠️ Ловушки и частые ошибки 1. `__slots__` везде — не нужно, усложняет код. 2. Забыть `__weakref__` в `__slots__` — слабые ссылки не работают. 3. Не проверять слабую ссылку на `None` — объект мог быть удалён. 4. Отключать `gc` без необходимости — приводит к утечкам. 5. Игнорировать циклические ссылки — они могут накапливаться. 💡 Запомни:
🟢 __slots__ — экономия памяти для миллионов объектов. 🟢 weakref — ссылки, которые не мешают удалять объекты. 🟢 gc — ручное управление циклическим сборщиком мусора. 🟢 Не оптимизируйте без измерений. 🟢 Используйте tracemalloc и gc.get_objects() для отладки утечек.
Программистика || #Статья

🧠 Загадка на ночь: что выведет этот код?
s1 = "hello"
s2 = "hello"
s3 = "".join(["h", "e", "l", "l", "o"])
print(s1 is s2, s1 is s3)
Варианты: 1. True True 2. True False 3. False True 4. False False Пиши свой вариант в комментарии! Ответ и разбор — через пару часов 🔥 Программистика || #quiz

Весь Python. Самое актуальное и исчерпывающее руководство Всеобъемлющее современное руководство по программированию на Python
Весь Python. Самое актуальное и исчерпывающее руководство
Всеобъемлющее современное руководство по программированию на Python, охватывающее фундаментальные идеи и практические приемы! Вы научитесь писать собственные программы и получите четкое представление о том, куда двигаться дальше и как использовать полученные знания. Изучение Python подкреплено практикой — огромным количеством примеров приложений. К концу книги вы будете готовы применить полученные знания и создать несколько реальных проектов. Вы научитесь эффективно использовать Python в анализе данных, веб-разработке и автоматизации задач. Книга включает описание новейших возможностей, появившихся в версиях Python 3.9–3.12, в том числе главы об аннотациях типов и консольных приложениях, а также примеры, демонстрирующие современные практики веб-разработки на Python.
Программистика || #Книги