Как писать код на Python: правила и рекомендации

Опубликовано: 05.05.2025
Категория: Python
Просмотров: 482

Python — это язык, который ценится за свою читаемость и простоту. Однако для создания действительно качественного кода необходимо следовать определённым правилам и рекомендациям. В этом подробном руководстве мы рассмотрим все аспекты написания профессионального кода на Python.

1. Ключевые элементы синтаксиса Python

1.1. Зарезервированные слова

Python 3.13 включает 36 зарезервированных слов, которые нельзя использовать в качестве идентификаторов:


False      await      else       import     pass
None       break      except     in         raise
True       class      finally    is         return
and        continue   for        lambda     try
as         def        from       nonlocal   while
assert     del        global     not        with
async      elif       if         or         yield

Проверка ключевых слов:


import keyword
print(keyword.iskeyword('return'))    # True  
print(keyword.kwlist)                 # Полный список 

1.2. Проверка типов: type() и isinstance()

Оператор type():


num = 10
print(type(num))  # <class 'int'>

class Vehicle: 
    pass

car = Vehicle()
print(type(car))  # <class '__main__.Vehicle'>

Функция isinstance():


class Animal: 
    pass

class Dog(Animal): 
    pass

buddy = Dog()
print(isinstance(buddy, Dog))    # True
print(isinstance(buddy, Animal)) # True (учёт наследования)
print(isinstance(buddy, (Animal, str)))  # True (проверка нескольких типов)

Рекомендации:

  • Используйте type() для точной проверки типа

  • Применяйте isinstance() для проверки с учётом наследования

  • Для проверки нескольких типов всегда выбирайте isinstance()

2. Форматирование и структура кода

2.1. Отступы и блоки кода

Основные правила:

  • 4 пробела на уровень отступа (PEP 8)

  • Запрет на смешивание пробелов и табуляции

  • Отступы определяют блоки кода (вместо фигурных скобок)

Пример:


def calculate(items):
    total = 0

    for item in items:
        if item.in_stock:  # Правильный отступ
            total += item.price * item.quantity
    return total

2.2. Перенос длинных строк

Методы переноса:


# С использованием круглых скобок (предпочтительно)
result = (first_value + second_value 
          + third_value + fourth_value)

# С обратным слешем (менее желательно)
total = first_value + second_value + \
        third_value + fourth_value

# Для коллекций
employees = [
    'John Smith', 'Sarah Johnson',
    'Michael Brown', 'Emily Davis'
]

2.3. Пустые строки и структура

Рекомендации PEP 8:

  • 2 пустые строки между функциями и классами

  • 1 пустая строка между методами класса

  • 1 пустая строка для разделения логических блоков

Пример:


def process_data(data):
    """Первичная обработка данных."""
   
cleaned = clean_input(data)
    normalized = normalize(cleaned)  # Разделение логических блоков
    return normalized


class DataAnalyzer:
    """Анализ данных."""
    
    def __init__(self):
        self.results = {}
    
    def analyze(self, data):
        """Основной метод анализа."""
        pass

3. Правила именования

3.1. Стили именования

PEP 8 стандарты:

  • Стиль snake_case: функции, переменные (calculate_total)

  • Стиль CamelCase: классы (BankAccount)

  • Стиль UPPER_SNAKE_CASE: константы (MAX_VALUE)

3.2. Практические примеры


class UserProfile:
    DEFAULT_ROLE = 'guest'  # Константа
    
    def __init__(self, username):
        self.username = username
        self._session_id = None  # Защищённый атрибут
        
    def get_user_info(self):
        """Получение информации о пользователе."""
        pass

4. Комментарии и документация

4.1. Типы комментариев

Однострочные:


# Проверяем наличие достаточного баланса
if balance >= amount:
    process_payment()

Inline-комментарии:


x = x + 1  # Компенсация смещения индекса

Docstrings:


def calculate_interest(principal, rate, years):
    """
    Вычисляет сложные проценты.
    
    Args:
        principal (float): Основная сумма
        rate (float): Годовая процентная ставка (0-1)
        years (int): Срок вложения в годах
        
    Returns:
        float: Итоговая сумма с процентами
    """
    return principal * (1 + rate) ** years

4.2. Рекомендации по комментированию

  1. Объясняйте "почему", а не "что"

  2. Обновляйте комментарии при изменении кода

  3. Избегайте избыточных комментариев

  4. Всегда документируйте публичное API

  5. Комментируйте неочевидные решения

5. PEP8 и инструменты проверки

5.1. Основные правила PEP 8

  • Максимум 79 символов в строке (72 для docstrings)

  • Правильная группировка импортов

  • Пробелы вокруг операторов

  • Согласованное именование

Пример правильных импортов:


import os
import sys
from typing import List, Dict

import numpy as np
import pandas as pd

from .models import User
from .utils import helpers

5.2. Инструменты контроля качества

  1. flake8 — проверка соответствия PEP 8

  2. black — автоматический форматировщик

  3. pylint — статический анализ кода

  4. mypy — проверка типов

  5. isort — сортировка импортов