Что такое PEP 8 и каково его назначение в Python

Ответ

PEP 8 (Python Enhancement Proposal 8) — это официальное руководство по стилю написания кода на Python. Его главная цель — улучшение читаемости и единообразия кода, написанного разными разработчиками.

Следование PEP 8 делает код более поддерживаемым и понятным, так как он соответствует общепринятым конвенциям в сообществе Python.

Ключевые рекомендации PEP 8:

  • Отступы: Использовать 4 пробела на уровень отступа. Не использовать табы.
  • Длина строки: Ограничивать длину строки 79 символами.
  • Импорты: Импорты должны быть в начале файла и сгруппированы в следующем порядке: стандартная библиотека, сторонние библиотеки, локальные приложения.
  • Пробелы: Использовать пробелы вокруг операторов (x = 1), после запятых ([1, 2, 3]), но не внутри скобок (print(x)).
  • Именование:
    • snake_case для функций и переменных (my_variable).
    • UPPER_SNAKE_CASE для констант (MAX_CONNECTIONS).
    • CamelCase (или PascalCase) для классов (MyClass).

Инструменты для автоматизации:

  • Линтеры (проверяют на соответствие): flake8, pylint.
  • Форматтеры (автоматически исправляют код): black, autopep8.

Пример кода, отформатированного по PEP 8:

# Константа в верхнем регистре
MAX_OVERFLOW = 100

class MyAwesomeClass:
    def __init__(self, name: str):
        # Переменная в snake_case
        self.user_name = name

    def calculate_sum(self, first_value: int, second_value: int) -> int:
        """Возвращает сумму двух чисел."""
        # Пробелы вокруг операторов
        total = first_value + second_value
        return total

Ответ 18+ 🔞

А, ну вот, блядь, опять про этот ваш PEP 8 начинают. Слушай, как будто без этого кода не пишется, ёпта! Но, похуй, раз уж спросили — сейчас разжую, как есть.

Представь, ты заходишь в квартиру к какому-нибудь пидарасу шерстяному, который носки по углам раскидал, кастрюли в кровати стоят, а на столе — три пустые банки из-под энергетика и дохлый таракан. Вот так же выглядит код, написанный без правил. А PEP 8 — это как твоя бабка с веником, которая приходит и начинает орать: «Сука, разбросал всё, манда с ушами! Ставь пробелы вокруг операторов, выравнивай отступы, а то получишь вилкой в глаз!».

Ну, и что там за правила, спросишь ты? Да нихуя сложного.

  • Отступы: Четыре пробела. Четыре, Карл! Не таб, не два, не пять. Четыре. Как будто идешь строевым шагом: раз-два-три-четыре, новая строка кода.
  • Длина строки: Не больше 79 символов. Это чтобы не приходилось, блядь, головой из стороны в сторону мотать, как будто на теннисном матче. Уложи свою мысль в лимит, ёбаный рот этого казино!
  • Именование: Тут всё просто, как три копейки.
    • Переменные и функции — snake_case, то есть всё маленькими буквами и через подчёркивание. my_super_variable, calculate_pizdets.
    • Константы — UPPER_SNAKE_CASE. Кричи на них, блядь, они же неизменяемые! MAX_AMOUNT_OF_BULLSHIT.
    • Классы — CamelCase. С большой буквы и горбом посередине, как верблюд. MyBeautifulClass.

А чтобы не ебаться с этим вручную, умные люди придумали костыли. То есть, инструменты.

  • Линтеры (flake8, pylint): Это как занудный препод, который ходит за тобой и тычет пальцем: «Здесь пробела не хватает, здесь строка длинная, а здесь, сука, ты вообще непонятно что написал, переделывай!».
  • Форматтеры (black, autopep8): А это уже баба с веником. Она не кричит, она просто берёт и подметает за тобой. Запустил — и код сам стал красивым, хоть в рамку вешай. Black вообще принципиальный — он форматирует так, как считает нужным, и ни на йоту иначе. С ним не поспоришь.

Ну и смотри, как это выглядит на практике, когда всё по правилам:

# Константа, на неё орем
MAX_OVERFLOW = 100

class MyAwesomeClass:
    def __init__(self, name: str):
        # Переменная, ползёт, как змея
        self.user_name = name

    def calculate_sum(self, first_value: int, second_value: int) -> int:
        """Возвращает сумму двух чисел. Или пиздец, если что-то не так."""
        # Пробелы вокруг плюса, всё чётко
        total = first_value + second_value
        return total

Вот и вся магия. Сначала кажется, что это ебаный бред и занудство, но потом, когда приходишь на проект, где десять человек код писали, а он читается, как одна книга — понимаешь, что бабка с веником была права. Чистота, блядь, залог не только здоровья, но и того, что тебя не пошлют нахуй при первом же code review.