Как писать код на Python: правила и рекомендации
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. Рекомендации по комментированию
-
Объясняйте "почему", а не "что"
-
Обновляйте комментарии при изменении кода
-
Избегайте избыточных комментариев
-
Всегда документируйте публичное API
-
Комментируйте неочевидные решения
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. Инструменты контроля качества
-
flake8 — проверка соответствия PEP 8
-
black — автоматический форматировщик
-
pylint — статический анализ кода
-
mypy — проверка типов
-
isort — сортировка импортов