Ответ
Согласно PEP 8, стандартному руководству по стилю кода Python, импорты следует группировать и сортировать в следующем порядке:
- Импорты стандартной библиотеки (например,
sys,os,json). - Импорты сторонних библиотек (например,
requests,pandas,numpy). - Импорты локального приложения (модули вашего собственного проекта).
Каждая группа должна быть отделена пустой строкой. Внутри каждой группы импорты сортируются в алфавитном порядке.
Почему это важно?
- Читаемость: Сразу видно, какие зависимости у модуля — встроенные, внешние или внутренние.
- Поддерживаемость: Упрощает разрешение конфликтов имен и помогает избежать циклических импортов.
Пример:
# 1. Стандартная библиотека
import os
from collections import deque
# 2. Сторонние библиотеки
import requests
from rest_framework.response import Response
# 3. Локальные импорты
from .models import User
from .utils import get_active_users
Автоматизация:
Для автоматической сортировки импортов в проектах широко используются утилиты, такие как isort или линтеры со встроенной функцией сортировки, например, ruff.
Ответ 18+ 🔞
А, ну вот, смотри, смотри! Сейчас я тебе про импорты в Python так расскажу, что ты, блядь, сам начнёшь их в алфавитном порядке во сне раскладывать. Ебать мои старые костыли, это же элементарно!
Есть такая священная книга, PEP 8, и там, сука, чётко прописано, как не быть распиздяем. Импорты надо не как попало кидать, а по группам, как в армии на построении.
Сначала, блядь, первый строй — это свои, родные, стандартная библиотека. os, sys, json — вот это всё. Свои, родненькие.
Потом, ёпта, второй строй — это наёмники, сторонние библиотеки. Пришли со стороны, но работают за деньги. requests, pandas, numpy — вот эта шушера.
И в самом конце, блядь, третий строй — это уже твоё местное ополчение, модули твоего собственного проекта. from .models import User, from .utils import some_shit.
И между этими строями, внимание, пустая строда! Как ровная полоса отчуждения! Чтобы свои с чужими не перемешались, понимаешь? А внутри каждого строя — по алфавиту, сука! Как в телефонной книге! Чтобы не искать полчаса, где у тебя json затерялся.
А нахуя это всё?
Да чтобы, блядь, читаемость была! Открыл файл — и сразу видно: а, тут свои библиотеки, а тут мы на django завязаны, а вот это уже наше, доморощенное. И конфликтов меньше, и мозг не ебёт.
Смотри, как красота выглядит:
# 1. Свои, стандартные (по алфавиту, блядь!)
import os
from collections import deque
# 2. Наёмники, сторонние (тоже по алфавиту!)
import requests
from rest_framework.response import Response
# 3. Местные пацаны, наши модули
from .models import User
from .utils import get_active_users
Ну и главный лайфхак, чтобы самому не ебаться с этим: есть такие утилиты — isort или ruff. Это, блядь, волшебники. Кинул им свой код, как есть, а они тебе всё по полочкам, по алфавиту, по группам разложат. Красота, ёпта! Чистый кайф, а не код.