Код легче всего читать сразу после написания. Через месяц — уже нет.
И главный союзник читаемости — whitespace (пробелы и переносы строк).
✅ Пробелы вокруг операторов
Плохо:
result = a**2+b**2+c**2
Лучше:
result = a**2 + b**2 + c**2
Слишком много:
result = a ** 2 + b ** 2 + c ** 2
👉 Пробелы должны подчёркивать смысл, а не ломать группы.
✅ Переносы строк внутри скобок
Python игнорирует переносы внутри
() [] {} — используйте это.Слишком плотный код:
print("I like", " and ".join(sorted(fruits)), "but only certain pears")
Читаемо:
print(
"I like",
" and ".join(sorted(fruits)),
"but only certain pears",
)
✅ List comprehensions — по логике, не по длине строки
В одну строку:
html_files = [p.name for p in paths if p.suffix == ".html"]
По смысловым блокам:
html_files = [
p.name
for p in paths
if p.suffix == ".html"
]
✅ Цепочки вызовов — каждая операция на своей строке
Тяжело читать:
books = Book.objects.filter(...).select_related(...).order_by("title")
Ясная последовательность:
books = (
Book.objects.filter(author__in=favorite_authors)
.select_related("author", "publisher")
.order_by("title")
)
✅ Списки и словари — по одному элементу
MONTHS = {
"January": 1,
"February": 2,
"March": 3,
# ...
}
👉 Trailing comma помогает форматтерам и будущим правкам.
✅ Пустые строки = визуальные блоки
Используйте их, чтобы отделять смысл:
def process():
data = load_data()
cleaned = clean(data)
return analyze(cleaned)
Но не переусердствуйте — не каждый перенос улучшает код.
➡️ Полный гайд по пробелам
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст