Программистика
قناة بسيطة
Лучший канал про python Ссылка для друга: https://t.me/+Ai6ughKtf5g2ZmFi Купить рекламу: https://telega.in/c/+Ai6ughKtf5g2ZmFi Админ: @JeyRahol По рекламе: @ReivuManager
إظهار المزيد5 768
المشتركون
-324 ساعات
-137 أيام
-6530 أيام
أرشيف المشاركات
5 801
✂️ Секрет `removeprefix` и `removesuffix`: обрезай строки без срезов и условий
Устали удалять начало или конец строки через срезы и проверки? В Python 3.9+ есть два метода, которые делают это элегантно.
❌ Было (костыль со срезами):
url = "https://example.com"
if url.startswith("https://"):
url = url[8:] # знай длину префикса наизусть
filename = "report.pdf"
if filename.endswith(".pdf"):
filename = filename[:-4] # и суффикс отрезать вручную
✔️ Стало (чисто и безопасно):
url = "https://example.com"
url = url.removeprefix("https://") # "example.com"
filename = "report.pdf"
filename = filename.removesuffix(".pdf") # "report"
🟢 Почему круто:
- Не нужно считать символы и помнить длину.
- Если префикса/суффикса нет, строка возвращается без изменений (никаких ошибок).
- Работает быстрее, чем проверка + срез.
Где пригодится: обработка URL, имён файлов, логов, API-ответов.
Запомни: removeprefix() и removesuffix() — твои друзья для чистой работы со строками.
Программистика|| #tips5 801
Что почитать разработчику? Разборы Алексея Рыбака
Пишете backend и хотите глубже понимать архитектурные решения? В канале Алексея Рыбака есть что разобрать:
• Микросервисы – какой ценой? Почему они могут стать неподъёмным «налогом» для стартапа
• Очереди сообщений – что выбрать? Чем отличаются решения и для каких задач подходят
• AI – помощь или новая нагрузка? Как меняется работа мейнтейнеров PostgreSQL, когда генерировать отчёты об ошибках становится проще, чем проверять
А ещё – System Design Framework, производительность, масштабируемость и блокировки СУБД. В канале выходят и анонсы AI-митапов и обучения разработке с агентами
Начните с интересующей темы и подписывайтесь на канал Алексея!
Подписаться
#реклама 16+
О рекламодателе
5 801
💻 Вопрос с собеседования: Чем отличается `isinstance()` от `type()`?
Этот вопрос задают, чтобы проверить, понимаете ли вы разницу между точным типом и проверкой на принадлежность к иерархии классов. Новички часто используют
type() для проверки, а потом удивляются, почему код не работает с наследниками. Разбираемся.
📌 Базовый ответ (которого ждут от джуна):
- type(obj) возвращает точный тип объекта.
- isinstance(obj, Class) проверяет, является ли объект экземпляром указанного класса или его наследником.
class Animal:
pass
class Dog(Animal):
pass
d = Dog()
print(type(d) is Dog) # True
print(type(d) is Animal) # False
print(isinstance(d, Dog)) # True
print(isinstance(d, Animal)) # True — потому что Dog наследуется от Animal
🧱 Глубокий разбор (для мидла и сеньора):
1. Почему `type()` опасен для проверок
Если вы пишете if type(obj) == MyClass, вы отсекаете всех наследников. Это почти всегда ошибка, потому что нарушает принцип подстановки Лисков.
def process_animal(animal):
if type(animal) is Animal: # ❌ не пропустит Dog
print("Обрабатываю животное")
✔️ Правильно: используйте isinstance(animal, Animal).
2. `isinstance` и виртуальные подклассы (ABC)
isinstance умеет работать с абстрактными базовыми классами и виртуальными подклассами. Например, list является виртуальным подклассом collections.abc.Iterable, даже если не наследуется от него явно.
from collections.abc import Iterable
print(isinstance([], Iterable)) # True — хотя list не наследуется от Iterable напрямую
3. Ловушка с `bool` и `int`
bool является подклассом int. Поэтому isinstance(True, int) вернёт True. Если вы ожидаете только целые числа, это может привести к багам.
print(isinstance(True, int)) # True
print(type(True) is int) # False — type() покажет bool
4. `isinstance` принимает кортеж классов
Можно проверить сразу несколько типов:
if isinstance(obj, (int, float)):
print("Число")
5. `type()` полезен, когда нужен точный тип
Например, в сериализации или при создании фабрик, где наследники должны обрабатываться отдельно.
if type(obj) is dict:
# обрабатываем именно dict, а не OrderedDict
⚠️ Частые ошибки
1. Использовать `type()` для проверки типов — ломает наследование.
2. Забывать про `bool`/`int` — isinstance(True, int) → True.
3. Путать `isinstance` с `issubclass` — issubclass проверяет классы, а не экземпляры.
4. Игнорировать виртуальные подклассы — isinstance работает с ABC и протоколами.
💡 Итоговый ответ для собеседования:
1. type(obj) — точный тип, isinstance(obj, cls) — с учётом наследования.
2. Для проверок в 99% случаев используйте isinstance.
3. type() — только когда нужен именно точный тип (редко).
4. isinstance поддерживает кортежи классов и виртуальные подклассы (ABC).
5. Помните, что bool — подкласс int, это частая ловушка.
Удачи на собеседованиях! 🔥🔥
Программистика|| #jobs5 801
📊 Библиотека Python: Polars
Polars — это сверхбыстрая библиотека для обработки данных, написанная на Rust. Она создана как современная альтернатива Pandas и использует все ядра процессора, ленивые вычисления и эффективную работу с памятью. Polars позволяет обрабатывать датасеты, которые не помещаются в оперативную память, и работает в разы быстрее Pandas на больших объёмах. Идеально для ETL-пайплайнов, аналитики и ML-подготовки данных.
✔️ Установка:
pip install polars
🐱 Ссылка на репозиторий
Программистика|| #Library5 801
Комментарии к заказу меняют сумму SQL-отчета. Где ошибка?
Для проверки учебного практикума "Сбой найден" нужны пять разработчиков с базовыми знаниями SQL.
Бесплатная выборка содержит одно упражнение с намеренно неверным кодом, независимыми проверками и эталоном, а также десять карточек backend-сбоев. Для запуска достаточно Python 3.11+ со стандартным sqlite3; отдельный сервер и установка зависимостей не нужны.
Формат рецензии --- 40-60 минут: самостоятельная попытка исправления, затем карточки и короткая обратная связь. Нужны конкретные замечания: что удалось воспроизвести, где не хватает объяснений, какие проверки вызывают вопросы. Покупка и положительный отзыв не требуются.
Это бесплатная выборка коммерческого каталога, а не доступ ко всему продукту. Данные синтетические.
Получение выборки и согласование участия: https://tglink.io/66cad5e7c97912?erid=2W5zFHf3drh
Код обращения: SQL-1.
Реклама. Романов С.Г. ИНН 772589517063.
5 801
Марафон данных: первое знакомство с SQL и Python
Этот курс для тех, кто хочет познакомиться с профессией аналитика данных. Если вы никогда ранее не сталкивались с SQL, Python и продуктовыми метриками, то Data Марафон – для вас! Мы расскажем про самые важные инструменты аналитика данных, и объясним всю суть аналитической работы максимально просто и на реальных примерах.
🌐 СсылкаПрограммистика || #Course
5 801
📖 Байесовская оптимизация с примерами из библиотек Python
Книга рассказывает об оптимизации моделей машинного обучения на основе байесовского метода и теории вероятностей. Примеры составлены на языке Python с использованием библиотек PyTorch, GPyTorch и BoTorch. Описаны приемы настройки гиперпараметров, гауссовское распределение, использование политик машинного обучения, в частности на основе задачи о многоруких бандитах, повышение производительности вычислений, многовариантная оптимизация с учетом полезности и затрат, а также применение байесовского метода в специализированных сценариях.Программистика||#Книги
5 801
🫥 Сервис запустили - пора принимать поздравления и платежи
С платежами поможет pay.hot. Подключаем оплату на сайте, в приложении или Telegram:
- СБП
- Банковские карты РФ
- Международные банковские карты
🫥 Можно подключиться без ИП и ООО в России, а выручку получать в USDT.
🫥 Работаем с пополнением Steam, донатами в игры, digital-сервисами, Таро-ботами, магазинами цифровых товаров, хостингами и нейросервисами.
🫥 Согласование и подключение - обычно до 7 часов. Поддержка на связи 24/7.
🫥 Кстати, у нас есть агентская программа. Если знаете проекты, которым нужен приём платежей, можете помогать им подключаться к pay.hot и получать агентское вознаграждение.
🫥 Расскажите о своём проекте: @payhotsupport_bot
5 801
👩💻 Python 3.15 — Новая эра производительности
Вышла новая версия Python, и это не просто «ещё один апдейт». Python 3.15 приносит изменения, которые реально ускоряют код и меняют то, как мы пишем программы. Разбираем главное.
📱 ПервоисточникПрограммистика|| #video
5 801
💀 Почему вы копипастите из ИИ и не растёте
Вы открываете ChatGPT или Claude. Пишете: «напиши функцию для парсинга JSON». Копируете. Вставляете. Работает. Через месяц вы не можете написать эту функцию без ИИ. Через год — не помните, как она работает. Знакомо? Тогда эта статья для вас. Только честно, без утешений.
🧱 Почему так происходит
ИИ даёт вам готовое решение. Мозг получает дофамин: «я справился». Но вы не прошли путь от проблемы к решению. Вы пропустили самую важную часть — мышление.
Когда вы пишете код сами, вы:
- обдумываете структуру - ошибаетесь - ищете причину ошибки - находите решение - запоминаете паттернКогда вы копируете из ИИ, вы:
- получаете результат - не понимаете, как он работает - не можете его изменить, если что-то сломается - не учитесь📌 Правило: прежде чем вставить код от ИИ — разберитесь, что он делает и почему именно так. Попросите нейросеть объяснить построчно. Это займёт 5 минут и спасёт вашу карьеру. 🗣 ИИ — это инструмент, а не замена пониманию
ИИ не делает вас программистом. Он делает вас быстрее, если вы уже понимаете, что делаете. Но если вы не понимаете — он делает вас беспомощным. На собеседовании вас не спросят: «умеете ли вы пользоваться ChatGPT?». Вас спросят: «объясните, как работает этот код». И если вы не можете — вы не прошли.📌 Правило: используйте ИИ как ускоритель, а не как костыль. Сначала попробуйте сами, потом проверьте у ИИ. Не наоборот. ♾ Как использовать ИИ правильно
1. Пишите код сами, даже если медленно. Это единственный способ научиться. 2. Используйте ИИ для ревью — покажите свой код и спросите, что можно улучшить. 3. Просите объяснить — «объясни построчно, что делает этот код». 4. Сравнивайте решения — напишите свой вариант, потом посмотрите, как сделал ИИ. 5. Задавайте вопросы — «почему именно так?», «какие есть альтернативы?».ИИ — это не шпаргалка. Это репетитор, который отвечает на вопросы. Но если вы просто списываете — вы не учитесь. Если зашла такая рубрика ставь реакцию 🔥? Программистика|| #Статья
5 801
REKONFA: что интересного вас ждёт 15 октября
15 октября встречаемся на REKONFA — большой конференции Яндекс Рекламы.
На сцене:
— Глеб Доброрадных — о рекламном рынке и эффективности в сложных условиях
— Алексей Штоколов — о новых продуктах и технологиях
— Лиза Смирнова — о 360°-форматах и новых точках контакта
— Александр Пушной — о человеке и ИИ
— Александр Умаров — о персональном подходе, который помогает влюблять клиентов в бренд
— Яна Чурикова — об актуальных задачах предпринимателей
— Татьяна Мужицкая — о целях и энергии
— Антон Беляев — об индивидуальности и проектах, которые любят зрители
Вне сцены — зона продуктов Яндекс Рекламы, три игры, викторина, зоны Яндекс Ярда и eLama и нетворкинг.
15 октября, Москва, ВТБ Арена и онлайн. Участие бесплатное.
Зарегистрироваться
#реклама 16+
ya.rekonfa.ru
О рекламодателе
5 801
🔍 `dir()` и `vars()`: смотрим содержимое объекта как рентген
Часто нужно быстро понять, что внутри объекта: какие у него атрибуты, методы, значения. Вместо гуглинга и чтения документации есть два встроенных инструмента, которые дают ответ за секунду.
`dir(obj)` — показывает все атрибуты и методы объекта.
class User:
def __init__(self, name):
self.name = name
def greet(self):
return f"Привет, {self.name}"
u = User("Алиса")
print(dir(u))
# ['__class__', '__delattr__', ..., 'greet', 'name']
🟢 Показывает и пользовательские атрибуты, и встроенные (магические методы).
🟢 Идеально, когда не помнишь, какие методы есть у объекта.
`vars(obj)` — возвращает __dict__ объекта: только пользовательские атрибуты и их значения.
print(vars(u)) # {'name': 'Алиса'}
🟢 Показывает именно данные, без методов и магии.
🟢 Работает с объектами, модулями и классами (у которых есть __dict__).
🟢 Если у объекта нет __dict__ (например, число), будет TypeError.
Разница на пальцах:
- dir() — что объект может (методы + атрибуты).
- vars() — что объект хранит (только данные).
Бонус: vars() без аргумента возвращает локальные переменные текущей области.
x = 10
y = 20
print(vars()) # {'x': 10, 'y': 20, ...}
Запомни: dir() — для исследования, vars() — для данных. Оба инструмента экономят часы отладки.
Программистика|| #tips5 801
📖 Вычислительные методы на Python в 2-х книгах
Учебное пособие представляет собой базовый курс по программированию на Python и предназначено для формирования практических навыков автоматизации вычислений и анализа данных. Книга 1 знакомит с базовыми понятиями, синтаксисом и конструкциями языка, закладывая фундамент алгоритмического мышления. Книга 2 дает представление об основных возможностях библиотек NumPy и pandas для работы с данными. Пособие содержит практические примеры и блоки упражнений для закрепления навыков программирования.Программистика || #Книги
5 801
Пачку офферов заказывали?
О всех трудоустройствах через ИИ-ассистента Софи ребята узнают от пользователей.
И какой же кайф, когда они делятся своими историями.
Вот так в чате узнали сразу о трех новых офферах:
• Кейс Сергея - 2 недели в Софи и 2 оффера.
• Кейс Елены - 1 неделя в Софи и оффер спустя 10 лет перерыва в работе. Елене 52 года.
• Кейс Юлии - 1 месяц в Софи, свитчер из финансового аналитика в разработчика SQL. И еще один оффер🎉
Искренние поздравления ребятам и удачи им на новой работе!
Доступ в Софи закрывается через 36 часов.
Первые 3 дня - бесплатно.
Успевай зарегистрироваться здесь.
5 801
👩💻 Библиотека Python: msgspec
msgspec — это сверхбыстрая библиотека для сериализации и валидации данных. Поддерживает JSON, MessagePack, YAML и TOML. Работает в 2–10 раз быстрее стандартного
json и pydantic за счёт оптимизаций на C. Позволяет описывать структуры через аннотации типов (как в dataclass) и автоматически валидировать входящие данные. Идеальна для высоконагруженных API, микросервисов и обработки больших объёмов данных.
✔️ Установка:
pip install msgspec
🐱 Ссылка на репозиторий
Программистика|| #Library5 801
Ищете облачную платформу? Есть Beget
✅ Аптайм 99,98% в дата-центрах Tier III
✅ Техподдержка 24/7 — живые люди, без ботов
✅ Прозрачная оплата без скрытых платежей
✅ Более 200 000 клиентов доверяют Beget
Узнать больше
5 801
🧠 Отгадка: что выведет этот код?
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`
📖 Почему так происходит?
Здесь работает MRO (Method Resolution Order) — порядок, в котором Python ищет методы в иерархии классов. Для класса D(B, C) порядок MRO следующий:
D → B → C → A → objectКогда вызывается
D(), выполняются цепочки __init__:
1. D.__init__ → печатает D, затем вызывает super().__init__().
2. super() в контексте D ищет следующий класс после D в MRO — это B.
3. B.__init__ → печатает B, затем вызывает super().__init__().
4. super() в контексте B ищет следующий после B в MRO — это C.
5. C.__init__ → печатает C, затем вызывает super().__init__().
6. super() в контексте C ищет следующий после C — это A.
7. A.__init__ → печатает A, затем вызывает super().__init__() (это object, у него нет вывода).
Итог: D B C A.
Ключевой момент: super() не вызывает «родительский класс» — он вызывает следующий класс в MRO. Именно поэтому цепочка проходит через B, потом C, потом A. Если бы в B или C не было super().__init__(), цепочка бы прервалась.
Это классический пример, который проверяет понимание множественного наследования и работы super().
Ставьте 🔥, если было полезно!
Программистика|| #quiz5 801
💻 Вопрос с собеседования: Что такое WSGI и ASGI, и в чём разница?
Этот вопрос задают на позиции Backend-разработчика, когда хотят понять, разбираетесь ли вы в том, как Python-приложения общаются с веб-серверами. Многие знают, что Django и Flask — это WSGI, а FastAPI — ASGI, но не могут объяснить, что это значит и зачем нужен новый стандарт.
📌 Базовый ответ (которого ждут от джуна):
WSGI (Web Server Gateway Interface) — это синхронный стандарт взаимодействия между веб-сервером и Python-приложением. Он описывает, как сервер передаёт запрос приложению и получает ответ.
ASGI (Asynchronous Server Gateway Interface) — это асинхронный стандарт, который поддерживает не только HTTP, но и WebSockets, а также позволяет использовать
async/await.
Проще говоря: WSGI — для синхронных приложений (Django, Flask), ASGI — для асинхронных (FastAPI, Starlette, Django Channels).
# WSGI-приложение (синхронное)
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return [b'Hello, WSGI!']
# ASGI-приложение (асинхронное)
async def application(scope, receive, send):
await send({
'type': 'http.response.start',
'status': 200,
'headers': [(b'content-type', b'text/plain')],
})
await send({
'type': 'http.response.body',
'body': b'Hello, ASGI!',
})
🧱 Глубокий разбор (для мидла и сеньора):
1. WSGI: как это работает
WSGI-приложение — это вызываемый объект (функция или класс с __call__), который принимает два аргумента:
- environ — словарь с данными запроса (метод, путь, заголовки, тело).
- start_response — функция для отправки статуса и заголовков.
Сервер (Gunicorn, uWSGI) вызывает приложение для каждого запроса. Пока приложение работает, оно блокирует поток. Для конкурентности используют несколько воркеров (процессов) или потоков.
# Пример WSGI-приложения на чистом Python
def app(environ, start_response):
status = '200 OK'
headers = [('Content-Type', 'text/plain; charset=utf-8')]
start_response(status, headers)
return [b'Hello, world!']
2. ASGI: что нового
ASGI-приложение — это асинхронная функция (корутина), которая принимает три аргумента:
- scope — словарь с информацией о соединении (тип: http, websocket, lifespan).
- receive — асинхронная функция для получения событий (например, тела запроса).
- send — асинхронная функция для отправки событий (заголовки, тело).
ASGI поддерживает:
- HTTP/1.1, HTTP/2, WebSockets.
- Асинхронную обработку без блокировки.
- Долгоживущие соединения (стриминг, SSE).
4. Как это влияет на выбор фреймворка
- Если у вас обычное синхронное приложение с реляционной БД — WSGI отлично справляется. Django и Flask используют WSGI. - Если нужны WebSockets, высокие нагрузки с множеством одновременных соединений, стриминг — выбирайте ASGI. FastAPI и Starlette работают на ASGI. - Django начиная с версии 3.0 поддерживает ASGI (через Channels), что позволяет использовать асинхронность в традиционном фреймворке.5. Ловушки и частые ошибки
❌ Смешивать синхронный и асинхронный код без понимания — можно заблокировать event loop. ❌ Использовать WSGI-сервер для ASGI-приложения — не заработает. ❌ Думать, что ASGI всегда быстрее — для простых задач WSGI может быть быстрее и стабильнее. ❌ Забывать про `async` в ASGI-приложении — все функции должны быть корутинами.💡 Итоговый ответ для собеседования: 1. WSGI — синхронный стандарт для связи веб-сервера и Python-приложения. Используется в Django, Flask. 2. ASGI — асинхронный стандарт, поддерживает WebSockets, HTTP/2, стриминг. Используется в FastAPI, Starlette, Django Channels. 3. WSGI блокирует поток на время обработки запроса, ASGI использует event loop и не блокирует. 4. Для обычных сайтов и API с синхронными операциями WSGI достаточно. Для высоких нагрузок и real-time — ASGI. 5. Выбор фреймворка определяет стандарт: Django/Flask → WSGI, FastAPI → ASGI. Понимание разницы между WSGI и ASGI показывает, что вы разбираетесь в архитектуре веб-приложений, а не просто пишете код. Это ценят на собеседованиях. Удачи на собеседованиях! 🔥🔥 Программистика|| #jobs
