PPython Заметки

Python Заметки

@pythonotes💻 Технологии🇷🇺 Русский📅 март 2026 г.

Интересные заметки и обучающие материалы по Python Контакт: @paulwinex ⚠️ Рекламу на канале не делаю!⚠️ Хештеги для поиска: #tricks #libs #pep #basic #regex #qt #django #2to3 #source #offtop

📊 Полная статистика📝 Все посты
##39#036#tricks#offtop#libs#092#linux#async
2.5K
Подписчики
762,1
Ср. охват
30.3%
Вовлечённость
20
Постов
~0.2
В день

Графики

📊 Средний охват постов

📉 ERR % по дням

📋 Публикации по дням

📎 Типы контента

Лучшие публикации

20 из 20
Ppythonotes
pythonotes
31 дек., 19:01

С Новым Годом! 🎄☃️❄️ Снова этот рубеж подведения итогов и определения планов на следующее 365 дней. Что же мы успели застать в 2к25? 🔸 AI снова делает скачёк в развитии, как по качеству, так и по затратам на ресурсы Продолжая расшатывать все рынки 🔸 Эпичный прорыв цен на железо (из-за первого факта). Сначала оперативка, потом и остальные подтянулись. Успели закупиться вовремя? 🔸 Новый виток "борьбы с интернетом" в РФ Работать всё сложней 🔸 Опенсорсный проект MinIO закрылся Теперь только в о...

👁 1.1K
Ppythonotes
pythonotes
26 янв., 10:03

Не запуская код определите, что покажет терминал если выполнить следующее: _Ab = 'c' class A: def get(self): return b print(A().get()) Ответ: Несмотря на то, что ваш IDE покажет ошибку, ошибки не будет. Распечатается "c" Объяснение: 1. Mangling За это отвечает механизм mangling - искажение имени. Так работают приватные атрибуты классов. При создании атрибута по правилу: минимум 2 "_" в начале и максимум 1 "_" в конце" имя автоматически становится вида _{classname}{attr} В нашем случае атрибутов ...

👁 1.1K
Ppythonotes
pythonotes
19 янв., 10:01

Все знают синтаксический сахар с операторами +=, -= и тд x += 1 Где под капотом он превращается в x = x + 1 Останется ли переменная х той же переменной после +=? Конечно нет, это же неизменяемый тип x = 1 print(id(x)) # 135373664533280 x += 1 print(id(x)) # 135373664533312 Теперь провернём тоже самое со списком ls = [1, 2] print(id(ls)) # 135373622585344 ls = ls + [3] print(id(ls)) # 135373619036608 Ожидаемо работает так же, ведь мы создали новую переменную. А теперь попробуем иначе: ls = [1, 2]...

👁 1.0K
Ppythonotes
pythonotes
12 янв., 10:00

import mimetypes mimetypes.guess_type("example.fbx") # (None, None) Формат не распознан, так как не зарегистрирован в системе. Регистрация происходит с помощью функции mimetypes.init(). Эта функция автоматически вызывается при первом обращении. Для каждой OS работает по-разному. В Windows читает реестр, в Linux достает всё из файла /etc/mime.types, в MacOS читает из системной БД. На linux можно попробовать распознать тип через вызов file --mime-type -b <filename> эта команда попробует прочитать ...

👁 979
Ppythonotes
pythonotes
5 янв., 10:02

В работе с медиа файлами часто требуется определить не просто расширение, а его, скажем так, "категорию". Тоесть определить это видео, аудио или картинка. Примерно в 10 случаях из 10 в ревью я вижу обычный хардкодинг с большим мапингом и соответствующим поиском по нему. file_type_by_ext = { 'video': ['.mp4', '.mov', '.mkv', ...], 'audio': ['.mp3', '.wav', '.ogg', ...], 'image': ['.jpg', '.png', '.exr', ...] } Для таких случаев есть простой способ - стандартная библиотека mimetypes. import mimety...

👁 964
Ppythonotes
pythonotes
30 янв., 10:04

В Gunicorn добавили ASGI. Пока что beta. gunicorn myapp:app --worker-class asgi То есть теперь вместо "gunicorn воркеры + uvicorn ранеры" будет всё из одной библиотеки? Коненчо, если скорость не будет драматически ниже. #libs

👁 839
Ppythonotes
pythonotes
23 февр., 10:02

Вы до сих пор используете в проекте "магические" строки?😖 @dataclass class Task: status: str ... def create_pending_task(data: dict) -> Task: task = Task(data) task.status = "pending" # < магическая строка return task Где тут проблема? 🔸 Если "pending" изменится на "wait", вам придется искать это слово по всему проекту 🔸 Напишете panding вместо pending и баг вылезет только в рантайме в непредсказуемом месте 🔸 Вам очень повезет, если в проекте нет такой же строки но с другим смыслом Как делат...

👁 822
Ppythonotes
pythonotes
2 мар., 10:03

Почему в прошлом посте я использовал StrEnum а не Enum? Всё просто, дефолтный Enum не поддерживает нативное сравнение с нужным нам типом. from enum import Enum class DefaultEnum(Enum): KEY = "value" "value" == DefaultEnum.KEY # False "value" == DefaultEnum.KEY.value # True Как видите, приходится вызывать .value, что неудобно в некоторых случаях и более многословно. StrEnum это исправляет: from enum import StrEnum class StringEnum(StrEnum): KEY = "value" "value" == StringEnum.KEY # True Для приме...

👁 802

Типы хуков

Нейтральный16 | 771 просм.
Вопрос3 | 797 просм.
Статистика1 | 514 просм.

Длина постов

Очень длинные (1000+)13 | 783 просм.
Длинные (500-1000)2 | 670 просм.
Средние (200-500)2 | 648 просм.
Короткие (<200)1 | 566 просм.

Влияние эмодзи

821
С эмодзи (5)
742
Без эмодзи (15)
+10.6% охвата

Типы контента

📷
2
photo
777 просм.
📝
18
text
761 просм.
Python Заметки (@pythonotes) — Telegram-канал | PostSniper