ББиблиотека Python разработчика | Книги по питону

Библиотека Python разработчика | Книги по питону

@BookPython🔌 Гаджеты🇷🇺 Русский📅 март 2026 г.

Погружение в CPython и архитектуру. Разбираем неочевидное поведение (GIL, Memory), Best Practices (SOLID, DDD) и тонкости Django/FastAPI. Решаем задачи с подвохом и оптимизируем алгоритмы. 🐍 По всем вопросам @evgenycarter РКН clck.ru/3Ko7Hq

📊 Полная статистика📝 Все посты
##39#036#ff0000#00ff00
19.6K
Подписчики
1.2K
Ср. охват
6.2%
Вовлечённость
20
Постов
~0.7
В день

Графики

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

📉 ERR % по дням

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

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

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

20 из 20
BBookPython
BookPython
6 мар., 12:23

Иногда в программе нужна очередь — контейнер, куда элементы добавляются с одной стороны и извлекаются с другой. В Python для этого можно использовать list: In : lst = [1, 2, 3] In : lst.pop() Out: 3 In : lst Out: [1, 2] In : lst[:0] = [4] # push In : lst Out: [4, 1, 2] Однако list выглядит не очень удобно (взгляните на этот "push") и работает неэффективно. In : lst = [0] 10_000_000 In : %timeit lst[:0] = [1] 9.5 ms ± 111 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) In : %timeit lst.p...

👁 1.9K
BBookPython
BookPython
3 мар., 08:31

default_factory в dataclass: мощнее, чем кажется Многие используют dataclass как удобный способ задать структуру с полями. Но редко кто по-настоящему раскрывает силу default_factory. А зря — он спасает от багов и даёт гибкость. Когда нужно задать значение по умолчанию для поля в dataclass, логично тянуться к default=. Но если это изменяемый тип (например, список или словарь) — вас поджидает ловушка. from dataclasses import dataclass, field @dataclass class User: name: str tags: list[str] = [] # ...

👁 1.6K
BBookPython
BookPython
4 мар., 10:16

Стандартный модуль json имеет интерфейс командной строки, который может быть полезен для форматирования JSON исключительно средствами Python. Модуль называется json.tool и вызывается следующим образом: $ echo '{"a": [], "b": "c"}' | python -m json.tool { "a": [], "b": "c" } 📲 Мы в MAX 👉@BookPython

👁 1.6K
BBookPython
BookPython
5 мар., 09:42

Скрытые фичи Enum: как выжать максимум Многие используют Enum как простой список констант. Но у enum.Enum в Python есть куда больше возможностей — и они могут сделать код чище и мощнее. Вот несколько приёмов, которые мало кто использует — но зря. 1. Добавление поведения в Enum from enum import Enum class Status(Enum): DRAFT = 'draft' PUBLISHED = 'published' ARCHIVED = 'archived' def is_visible(self): return self in {Status.DRAFT, Status.PUBLISHED} Теперь Status.DRAFT.is_visible() — это просто и ...

👁 1.5K
BBookPython
BookPython
10 мар., 14:11

Некоторый код может выводить интересующие вас данные в stdout, вместо того чтобы предоставлять API, возвращающий строку, пригодную для использования в программе. Вместо рефакторинга такого кода можно воспользоваться менеджером контекста contextlib.redirect_stdout, который позволяет временно перенаправить stdout в любой объект, поддерживающий файловый интерфейс. В сочетании с io.StringIO это позволяет сохранить вывод в переменную. from contextlib import redirect_stdout from io import StringIO s =...

👁 1.5K
BBookPython
BookPython
11 мар., 16:46

Популярный способ объявить абстрактный метод в Python — это выбросить исключение NotImplementedError: def human_name(self): raise NotImplementedError Хотя этот подход довольно распространён и даже поддерживается IDE (например, PyCharm считает такие методы абстрактными), у него есть недостаток: ошибка возникает только при вызове метода, а не при создании экземпляра класса. Чтобы избежать этой проблемы, используйте модуль abc: from abc import ABCMeta, abstractmethod class Service(metaclass=ABCMeta...

👁 1.5K
BBookPython
BookPython
11 мар., 11:54

Чтобы отсортировать словарь по его значениям, используйте функцию sorted с пользовательской функцией ключа: >>> d = dict(a=1, c=3, b=2) >>> sorted(d.items(), key=lambda item: item[1]) [('a', 1), ('b', 2), ('c', 3)] Однако такая функция уже существует в модуле operator: >>> from operator import itemgetter >>> sorted(d.items(), key=itemgetter(1)) [('a', 1), ('b', 2), ('c', 3)] Вы также можете сортировать только ключи вместо пар ключ-значение: >>> sorted(d, key=lambda k: d[k]) ['a', 'b', 'c'] И сно...

👁 1.5K
BBookPython
BookPython
12 мар., 09:48

Как упростить работу с аргументами в командной строке с помощью typer Раньше для CLI-приложений на Python я использовал argparse, потом был click, но недавно полностью перешёл на typer. Это библиотека от автора FastAPI, и она реально 🔥 Вот простой пример: import typer app = typer.Typer() @app.command() def hello(name: str, age: int = 18): print(f"Привет, {name}! Тебе {age} лет.") if name == "main": app() Теперь можно запускать в терминале: $ python main.py hello Alice --age 30 Привет, Alic...

👁 1.4K
BBookPython
BookPython
17 мар., 09:18

💡 Как избежать повторения кода с помощью functools.partial Как упростить код и избежать дублирования с помощью functools.partial. Допустим, у нас есть функция send_email(to, subject, body, is_html=False), и мы часто вызываем её с одним и тем же параметром is_html=True. Вместо того чтобы каждый раз писать это явно, можно создать частичную функцию: from functools import partial send_html_email = partial(send_email, is_html=True) # Теперь можно вызывать проще: send_html_email("user@example.com", "...

👁 1.3K
BBookPython
BookPython
16 мар., 21:40

Встроенные значения float в Python используют оборудование вашего компьютера напрямую, поэтому любое значение представляется внутренне в виде двоичной дроби. Это означает, что вы обычно работаете с приближениями, а не с точными значениями: >>> format(0.1, '.17f') '0.10000000000000001' Модуль decimal позволяет использовать десятичную арифметику с произвольной точностью: >>> from decimal import Decimal >>> Decimal(1) / Decimal(3) Decimal('0.3333333333333333333333333333') Но и этого может быть недо...

👁 1.3K

Типы хуков

Нейтральный20 | 1.2K просм.

Длина постов

Очень длинные (1000+)10 | 1.3K просм.
Длинные (500-1000)8 | 1.1K просм.
Средние (200-500)2 | 1.2K просм.

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

1.2K
С эмодзи (4)
1.2K
Без эмодзи (16)
-2.1% охвата

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

📝
20
text
1.2K просм.