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

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

قناة بسيطة

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

إظهار المزيد
5 580
المشتركون
-524 ساعات
-437 أيام
-10430 أيام
أرشيف المشاركات
The Dark - приватный канал от специалиста по цифровой криминалистике. • Годные OSINT инструменты; • Нейросети; • Приватные мануалы и софт; • Malware Analysis Кому сюда: — Профессионалам, которые устали от детского сада в тематических каналах. — Аналитикам, расследователям, revers-инженерам. — Тем, кто знает, чем PE отличается от ELF, и не задаёт вопросов «а что такое отладчик». Впервые открыт свободный вход Welcome to The Dark

👩‍💻 Структурное сопоставление (match-case): не просто switch, а мощный инструмент В Python 3.10 появилась фича, которую ждали годы — структурное сопоставление с образцом (pattern matching). Многие думают, что это просто аналог switch-case из других языков, но на самом деле match-case гораздо мощнее: он умеет разбирать кортежи, списки, словари, классы и даже захватывать значения. Разбираемся на примерах. 🧱 Проблема: куча if-elif-else для проверки структуры Без match-case проверка сложных данных превращается в лапшу:
def process_data(data):
    if isinstance(data, tuple) and len(data) == 2 and isinstance(data[0], str):
        action = data[0]
        value = data[1]
        if action == "print":
            print(value)
        elif action == "square":
            print(value ** 2)
        else:
            print("Неизвестная команда")
    elif isinstance(data, list) and data and data[0] == "quit":
        return None
    else:
        raise TypeError("Неожиданный формат")
🧠 match-case: читаемо и мощно То же самое с match-case:
def process_data(data):
    match data:
        case ("print", value):
            print(value)
        case ("square", value):
            print(value ** 2)
        case ["quit"] | ["exit"]:
            return None
        case _:
            raise TypeError("Неожиданный формат")
Код стал короче, понятнее и безопаснее. 🔍 Что умеет match-case 1. Сопоставление с литералами
status = 404
match status:
    case 200:
        print("OK")
    case 404 | 403:
        print("Ошибка клиента")
    case 500:
        print("Ошибка сервера")
2. Захват значений
match point:
    case (x, y):
        print(f"Координаты: x={x}, y={y}")
    case (x, y, z):
        print(f"3D: {x}, {y}, {z}")
3. Распаковка списков и кортежей
match command.split():
    case ["help"]:
        print("Справка")
    case ["run", script, *args]:
        print(f"Запуск {script} с аргументами {args}")
4. Сопоставление с частями
match [1, 2, 3, 4, 5]:
    case [first, second, *rest]:
        print(first, second, rest)  # 1 2 [3, 4, 5]
    case _:
        print("Недостаточно элементов")
5. Словари и именованные поля
match data:
    case {"type": "user", "name": name, "age": age}:
        print(f"Пользователь {name}, {age} лет")
    case {"type": "product", "title": title}:
        print(f"Товар: {title}")
6. Сопоставление с классами
from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

match obj:
    case Point(x=0, y=0):
        print("Начало координат")
    case Point(x=0, y=y):
        print(f"На вертикальной оси y={y}")
    case Point():
        print("Обычная точка")
7. Условия (guard)
match value:
    case int(x) if x > 0:
        print(f"Положительное число {x}")
    case int(x):
        print(f"Неположительное число {x}")
⚠️ Ловушки и ограничения 1. Match не проваливается вниз как в C-шном switch. Отработал один case — выход. 2. Переменные, захваченные в case, видны только внутри этого case (и после него, если не переопределены). 3. Сопоставление с `_` (подчёркивание) — аналог default, но _ — это законная переменная, которая не используется. 4. Порядок важен — более конкретные case должны идти раньше общих. 💡 Запомни:
🟢 match-case — не просто замена if-elif, а полноценный инструмент для декомпозиции структур данных. 🟢 Умеет распаковывать последовательности, словари, объекты и накладывать условия. 🟢 Делает код обработки вложенных данных читаемым и безопасным. 🟢 Доступен с Python 3.10+. Если ваш проект ещё не обновился — есть повод.
Программистика || #Статья

Совет на ближайшие годы — изучайте ВАЙБ-КОДИНГ ИИ уже пишет код, чинит баги, генерирует тесты, документацию и помогает запуск
Совет на ближайшие годы — изучайте ВАЙБ-КОДИНГ ИИ уже пишет код, чинит баги, генерирует тесты, документацию и помогает запускать продукты быстрее, чем это делали классические команды разработки. И это уже не "будущее когда-нибудь", а реальность, которая меняет рынок уже сегодня И те, кто научится вайбкодить сейчас, будут увереннее конкурировать на рынке и зарабатывать больше тех, кто по-прежнему делает всё вручную. Стартовать с нуля поможет канал Вайб-кодинг. Там ребята круглосуточно мониторят более 320 российских и зарубежных источников и публикуют только главное: релизы, инструменты, гайды, курсы и практические кейсы. Подписывайтесь, нас уже 30 тысяч: @vibecoding_tg

🖥 Guillotina — это современная RESTful-платформа на основе Python, разработанная для эффективного управления большими объема
🖥 Guillotina — это современная RESTful-платформа на основе Python, разработанная для эффективного управления большими объемами данных! Она построена с использованием asyncio, что обеспечивает высокую производительность и масштабируемость при работе с асинхронными операциями.
🐱 Ссылка на GitHub Программистика|| #Репозиторий

🖥 Trogon— это библиотека, которая автоматически создаёт интерактивный TUI-интерфейс (текстовый пользовательский интерфейс) для любого CLI-приложения, написанного с использованием Click, Argparse, Tyro или других парсеров. Просто добавьте одну строку кода — и ваш скучный --help превращается в удобный меню-выбор с автодополнением и навигацией стрелочками. Работает на движке Textual. Идеально для скриптов, которыми пользуются не разработчики, а обычные люди.
Установка:
pip install trogon
Пример: Если у вас есть Click-приложение cli, добавьте trogon и запустите trogon myapp. 🐱 Ссылка на GitHub Программистика|| #Репозиторий

Айтишники ловите сборник бесплатных курсов, полезных инструментов и книг Проект «TERMINAL» стал крупнейшей библиотекой беспла
Айтишники ловите сборник бесплатных курсов, полезных инструментов и книг Проект «TERMINAL» стал крупнейшей библиотекой бесплатного образования. В одном канале собраны курсы, книги, полезные инструменты и практические тренажёры для всех разработчиков 🎓 Практические курсы и задания 🪽 Книги и статьи известных авторов 😮‍💨 Полезные инструменты и ресурсы 🌟 IT-новости и инсайды Обучение по всем направлениям: SQL, Python, Frontend, PHP, C++, Golang, GIT, Linux, QA, Java, кибербезопасность и др. Ценишь знания, подпишись: Terminal_tg

🧠 Отгадка: что выведет этот код про декоратор?
def deco(func):
    def wrapper(*args, **kwargs):
        print("start")
        return func(*args, **kwargs)
    return wrapper

@deco
def add(a, b):
    return a + b

result1 = add(2, 3)
result2 = add(2, 3, 4)
print(result1, result2)
✔️ Правильный ответ: 2. start затем 5, затем TypeError 📖 Почему так происходит? 1. Декоратор @deco заменяет функцию add на wrapper, которая печатает "start" и затем вызывает исходную add. 2. При первом вызове add(2, 3) — всё ок. Печатается start, возвращается 5. 3. При втором вызове add(2, 3, 4) — обёртка пропускает три аргумента, но исходная функция add ожидает ровно два (a, b). Python выбрасывает TypeError: add() takes 2 positional arguments but 3 were given. 4. Исключение возникает до того, как код вернётся в print(), поэтому result2 никогда не присваивается, и print(result1, result2) даже не выполняется. Вместо этого программа падает с ошибкой. Что в консоли:
start
start
TypeError: add() takes 2 positional arguments but 3 were given
Обратите внимание: start печатается для второго вызова перед ошибкой, потому что декоратор выполняется до вызова исходной функции. Программистика || #quiz

🗣 FastAPI — Как установить + 3 способа запуска проекта
📱 Первоисточник
Программистика|| #video

🎖 С Днём Победы, уважаемые коллеги! 9 мая — день, который мы не имеем права забывать. Спасибо ветеранам за мир, свободу и во
🎖 С Днём Победы, уважаемые коллеги!
9 мая — день, который мы не имеем права забывать. Спасибо ветеранам за мир, свободу и возможность жить, работать и создавать. Низкий поклон. Вечная память.
Программистика

📖PyCharm: профессиональная работа на Python Раскройте возможности PyCharm для создания деловых, научных и веб-приложений на
📖PyCharm: профессиональная работа на Python
Раскройте возможности PyCharm для создания деловых, научных и веб-приложений на Python!PyCharm – лучшая профессиональная среда разработки для программистов Python среди множества доступных интегрированных сред. Независимо от того, в каких целях используется Python – для общих задач автоматизации, создания утилит, веб-приложений, анализа данных, машинного обучения или бизнес-приложений, – инструменты PyCharm упрощают выполнение сложных задач и оптимизируют общую производительность
Программистика ||#book

📌 Шпора по типам данных Программистика ||#Шпора
📌 Шпора по типам данных Программистика ||#Шпора

🧠 Загадка на ночь (для профи): что выведет этот код?
def deco(func):
    def wrapper(*args, **kwargs):
        print("start")
        return func(*args, **kwargs)
    return wrapper

@deco
def add(a, b):
    return a + b

result1 = add(2, 3)
result2 = add(2, 3, 4)
print(result1, result2)
Варианты: 1. 5 и TypeError 2. start затем 5, затем TypeError 3. 5 и 9 4. start затем 5, затем start затем 9 Пиши свой вариант в комментарии! Ответ и разбор — через пару часов 🔥 Программистика || #quiz

👩‍💻 Click — это библиотека для создания интерфейсов командной строки (CLI). В отличие от argparse, Click использует декорат
👩‍💻 Click — это библиотека для создания интерфейсов командной строки (CLI). В отличие от argparse, Click использует декораторы, делая код коротким и понятным. Поддерживает вложенные команды, цвета, подсказки, пароли и автогенерацию --help. На Click построены инструменты вроде Flask, Black и Pytest. 🐱 Ссылка на GitHub Программистика || #Репозиторий

🔥 Мастхев подборка для каждого айтишника Держите подборку авторских IT-каналов по всем направлениям: курсы, книги, статьи, п
🔥 Мастхев подборка для каждого айтишника Держите подборку авторских IT-каналов по всем направлениям: курсы, книги, статьи, практики, примеры кода, шпаргалки и прохождение собесов. ▪️ Python ▪️ Java ▪️ Frontend ▪️ C / C++ ▪️ ИБ & Хакинг ▪️ DevOps ▪️ Data Science ▪️ Linux ▪️ C# & GameDev ▪️ Курсы IT ▪️ ИИ-бот для IT ▪️ Весь IT 👉🏻 Подписывайся и прокачивай свои навыки

🏷 Секрет getattr: читай атрибуты без try/except Устали писать try/except AttributeError чтобы проверить, есть ли у объекта нужное поле? ❌ Было:
try:
    value = obj.some_attr
except AttributeError:
    value = "default"
Стало:
value = getattr(obj, 'some_attr', 'default')
getattr(object, name, default) пытается получить атрибут. Если его нет — возвращает default (по умолчанию None). Никаких исключений. Где пригодится: 🟢 Работа с динамическими объектами (API, JSON, конфиги) 🟢 Безопасное чтение вложенных атрибутов 🟢 Функции с опциональными аргументами-аттрибутами Запомни: getattr — твой друг для безопасного доступа. Программистика|| #tips

💻 Вопрос с собеса: Чем отличается list от tuple? Это один из тех вопросов, который задают почти всем - и все равно на нем спотыкаются. Просто сказать «list изменяемый, а tuple нет» - мало. Надо понимать последствия. 👉 Базовый ответ (которого ждут): - list - изменяемый (mutable). Можно менять, добавлять, удалять элементы. - tuple - неизменяемый (immutable). После создания его нельзя изменить. 👉 Глубокий разбор: 1. Производительность и память: Из-за неизменяемости tuple работает быстрее и занимает меньше памяти. Python может кэшировать и оптимизировать их.
import sys
import timeit

lst = [1, 2, 3]
tup = (1, 2, 3)

print(sys.getsizeof(lst))  # 120 байт (может меняться)
print(sys.getsizeof(tup))  # 72 байта
2. Безопасность и хэшируемость: tuple можно использовать как ключ в словаре, list - нет. Это важно для кэшей, индексов.
valid_cache = {(1, 2): "result"}  # Работает
invalid_cache = {[1, 2]: "result"}  # TypeError: unhashable type
3. Семантическое различие: - list - это однородная коллекция (все элементы обычно одного типа). - tuple - это гетерогенная коллекция, часто используется как запись с полями (как namedtuple или дата-класс).
# Плохо: tuple как list
for item in ("apple", "banana", "cherry"):
    print(item)

# Хорошо: tuple как структура
person = ("Alice", 30, "engineer")  # имя, возраст, профессия
4. Неизменяемость - только на верхнем уровне: Важный подвох! Если внутри tuple лежит изменяемый объект - его можно изменить.
danger = (1, 2, [3, 4])
danger[2].append(5)  # Опасно! Работает!
print(danger)  # (1, 2, [3, 4, 5])
💡 Итоговый ответ для собеса:
1. Основное: list - mutable, tuple - immutable 2. Следствия: tuple быстрее, занимает меньше памяти, хэшируем 3. Семантика: list для однородных данных, tuple для структур 4. Ловушка: неизменяемость только на верхнем уровне 5. Когда что использовать: - tuple для константных данных, ключей словаря - list для динамических коллекций
Запомни: на джуньорских позициях хватит первого пункта, но сеньоры ждут все пять. Программистика||#jobs

В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онлайн Но где их находить? Как узнавать о них ран
В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онлайн Но где их находить? Как узнавать о них раньше, чем когда все начнут выкладывать фотографии оттуда? Переходите на канал IT-Мероприятия России. В нём каждый день анонсируются мероприятия со всех городов России 📆 в канале размещаются как онлайн, так и оффлайн мероприятия; 👩‍💻 можно найти ивенты по любому стеку: программирование, frontend-backend разработка, кибербезопасность, дата-аналитика, osint, devops и другие; 🎙 разнообразные форматы мероприятий: митапы с коллегами по цеху, конференции и вебинары с известными опытными специалистами, форумы и олимпиады от важных представителей индустрии и многое другое А чтобы не искать по разным форумам и чатам новости о предстоящих ивентах: 🚀 IT-мероприятия Россииподписывайся и будь в курсе всех предстоящих мероприятий!

👩‍💻 Принципы SOLID на реальном примере в Python
📱 Первоисточник
Программистика|| #video

🪄 pyinstrument — это профилировщик Python, который показывает, где ваш код тратит время, простым и наглядным способом. В отл
🪄 pyinstrument — это профилировщик Python, который показывает, где ваш код тратит время, простым и наглядным способом. В отличие от cProfile (который выдаёт простыню цифр), pyinstrument рисует красивый древовидный отчёт: сразу видно, какие функции вызывают тормоза и сколько времени ушло на свои и дочерние вызовы. Работает на уровне интерпретатора, не требует изменения кода. Идеально для поиска узких мест в веб-приложениях, скриптах и ETL-пайплайнах.
Установка:
pip install pyinstrument
Запуск:
pyinstrument script.py
🐱 Ссылка на GitHub Программистика || #Репозиторий