Перейти к основному содержимому

Python — итоги

Разработчику Аналитику Тестировщику Архитектору Инженеру

Кратко — что стоит унести из раздела "Python". Если пункт кажется туманным — откройте указанную главу или оглавление.


FAQ — Часто задаваемые вопросы

Типичные сбои и ситуации, с которыми сталкиваются новички после раздела. Здесь — что делать и где копать в главах; определения для зачёта — в чек-листе.

Вопрос. python в терминале — "command not found", хотя Python "установлен".

Ответ. На Windows часто работает py или python3, а не python; путь не добавлен в PATH. Проверьте галочку "Add to PATH" при установке или укажите полный путь к интерпретатору. После настройки — python -c "print('ok')" (или py -c …). Подробнее здесь — первая программа, установка.

Вопрос. Скопировал код из интернета — IndentationError: unexpected indent.

Ответ. Python использует отступы как синтаксис; смешение табов и пробелов ломает файл. Переведите файл на 4 пробела, включите "show whitespace" в редакторе. Подробнее здесь — первая программа, PEP 8.

Вопрос. Изменил список в одной переменной — "сам" изменился и другой, хотя присваивания не было.

Ответ. Обе переменные ссылаются на один и тот же объект. Для копии списка используйте list.copy() или copy.deepcopy для вложенных структур. Подробнее здесь — типы и ссылки, коллекции.

Вопрос. Функция с def f(items=[]) накапливает элементы между вызовами.

Ответ. Значение по умолчанию вычисляется один раз при определении функции. Для изменяемых аргументов пишите items=None и создавайте список внутри. Подробнее здесь — функции.

Вопрос. pip install падает с правами доступа или "externally-managed-environment".

Ответ. На Linux (Debian/Ubuntu) системный Python защищён от глобального pip. Создайте venv и ставьте пакеты туда: python -m venv .venv, активация, затем pip install. Подробнее здесь — виртуальные окружения, pip.

Вопрос. На другом компьютере проект не запускается — "No module named 'django'".

Ответ. Зависимости не переносятся с кодом автоматически. Активируйте venv и выполните pip install -r requirements.txt. Проверьте версию Python. Подробнее здесь — requirements, веб-разработка.

Вопрос. python script.py открывает файл в блокноте, а не выполняет.

Ответ. Ассоциация .py в Windows привязана к редактору. Запускайте из терминала python script.py или py script.py, не двойным щелчком. Подробнее здесь — первая программа.

Вопрос. UnicodeDecodeError при чтении файла с русским текстом.

Ответ. Файл сохранён в другой кодировке (часто cp1251 на Windows). Укажите encoding='utf-8' в open() или пересохраните файл в UTF-8. Подробнее здесь — работа с файлами, примеры с разбором.

Вопрос. Цикл for i in range(len(lst)) — коллега говорит, что так "не по-пythonic".

Ответ. Идиоматичнее for item in lst: или enumerate(lst) когда нужен индекс. Это читаемее и быстрее для новичка. Подробнее здесь — циклы, Дзен Python.

Вопрос. KeyError при обращении к словарю — ключ "точно есть".

Ответ. Проверьте тип ключа (строка "1" и число 1 — разные ключи), пробелы и регистр. Безопаснее dict.get(key, default). Подробнее здесь — словари.

Вопрос. Многопоточность не ускоряет вычисления — CPU загружен на 12%, а я ждал ускорения.

Ответ. GIL в CPython не даёт параллельно исполнять байт-код в потоках для CPU-bound задач. Для вычислений — multiprocessing, для сети — threading или asyncio. Подробнее здесь — GIL и параллелизм, многопоточность.

Вопрос. asyncio — корутина "висит", event loop уже запущен.

Ответ. Нельзя вызывать asyncio.run() из уже работающего loop (Jupyter, вложенные вызовы). Используйте await в async-функции или nest_asyncio только для экспериментов. Подробнее здесь — асинхронность.

Вопрос. Django после migrate таблицы пустые, данные "пропали".

Ответ. Часто переключили файл базы SQLite или другой DATABASES в settings. Проверьте путь к db.sqlite3 и не удаляли ли файл при смене конфигурации. Подробнее здесь — Django — первая программа, справочник Django.

Вопрос. Flask возвращает 404 на POST — GET на тот же URL работает.

Ответ. Маршрут объявлен только для GET или метод не указан в @app.route(..., methods=['POST']). Проверьте URL, trailing slash и CSRF для форм. Подробнее здесь — Flask.

Вопрос. FastAPI в Swagger работает, а фронт получает CORS error.

Ответ. Добавьте CORSMiddleware с нужными origin и методами. Swagger ходит с того же origin, браузерный фронт — с другого. Подробнее здесь — FastAPI, веб и REST.

Вопрос. pytest находит ноль тестов — файлы лежат рядом с кодом.

Ответ. Имена должны быть test_*.py или *_test.py, функции — test_*. Запускайте из корня проекта с активированным venv. Подробнее здесь — pytest.

Вопрос. pickle.load на файле с интернета — антивирус и коллеги в панике.

Ответ. Pickle выполняет произвольный код при загрузке — никогда не unpickle данные от недоверенных источников. Для обмена используйте JSON. Подробнее здесь — сериализация.

Вопрос. Tkinter окно мелькает и сразу закрывается.

Ответ. Без root.mainloop() цикл событий не держит окно. Вызовите mainloop в конце и не завершайте скрипт до закрытия окна. Подробнее здесь — Tkinter — первая программа, Tkinter, примеры с разбором.

Вопрос. ImportError: attempted relative import with no known parent package.

Ответ. Относительный импорт работает внутри пакета, запущенного как модуль (python -m mypkg.main), а не при прямом запуске файла. Добавьте __init__.py и структуру пакета. Подробнее здесь — модули и пакеты.

Вопрос. В Jupyter изменил переменную, перезапустил только ячейку — результат "старый" или странный.

Ответ. Ядро хранит состояние между ячейками. После смены функций или импортов делайте "Restart kernel and run all". Подробнее здесь — REPL и первая программа.

Вопрос. pandas читает CSV — все числа стали строками с запятой.

Ответ. Укажите decimal=',', thousands='.' или dtype, проверьте локаль файла. Для дат — parse_dates. Подробнее здесь — pandas, практикум Pandas, примеры read_csv.

Вопрос. Установил пакет через pip, а в IDE "Unresolved reference".

Ответ. IDE смотрит на другой интерпретатор, не на venv проекта. В PyCharm/VS Code выберите Python из .venv. Подробнее здесь — виртуальные окружения.

Вопрос. TypeError: 'NoneType' object is not subscriptable после цепочки вызовов.

Ответ. Промежуточный метод вернул None (часто .sort() на месте вместо sorted()). Разбейте цепочку и проверьте возвращаемые значения. Подробнее здесь — функции, списки.

Вопрос. Python 2 код из статьи 2015 года не запускается — print "hello".

Ответ. Python 2 снят с поддержки. Перепишите на Python 3: print(), / для float, input() вместо raw_input. Подробнее здесь — история, первая программа.

Вопрос. Одновременно учу Django, FastAPI и Flask — три tutorial конфликтуют.

Ответ. Для первого веб-проекта выберите один фреймворк по маршруту в intro: Flask или Django для HTML, FastAPI для JSON API. Смешивание в одном репозитории запутает структуру. Подробнее здесь — оглавление, Flask, Django, FastAPI.

Вопрос. requests.get в скрипте работает, в asyncio — блокирует всё.

Ответ. requestsсинхронная библиотека. В async-коде используйте httpx/aiohttp или выносите блокирующие вызовы в asyncio.to_thread. Подробнее здесь — сетевое программирование, asyncio.

Вопрос. Декоратор "съел" аргументы — функция вызывается без параметров.

Ответ. Обёртка должна принимать *args, **kwargs и пробрасывать их в оригинал; для сохранения метаданных — functools.wraps. Подробнее здесь — декораторы.

Частые поисковые запросы

Вопрос. Python для начинающих — с чего начать учить с нуля?

Ответ. Установите Python 3 → первая программа → переменные и циклы → функции → файлы → venv и pip → один маршрут (веб или скрипты). Подробнее здесь — оглавление, язык общего назначения.

Вопрос. Python или Java — что лучше учить в 2025–2026?

Ответ. Python — быстрее старт, data science, скрипты, FastAPI/Django; Java — enterprise, Android-наследие, Spring. Выбор по цели карьеры, не по хайпу. Подробнее здесь — Python — intro, Java — intro.

Вопрос. Django или Flask — что выбрать для первого веб-проекта?

Ответ. Flask — минимализм и гибкость; Django — "batteries included": ORM, админка, auth из коробки. Для учебного сайта с БД часто проще Django. Подробнее здесь — Flask, Django — первая программа.

Вопрос. FastAPI или Django REST Framework — что для JSON API?

Ответ. FastAPI — async, OpenAPI, типы; DRF — экосистема Django и ORM. Для чистого API без админки часто FastAPI; внутри Django-проекта — DRF. Подробнее здесь — FastAPI, DRF.

Вопрос. Как установить Python на Windows 10/11?

Ответ. Скачайте установщик с python.org, отметьте "Add Python to PATH", проверьте python --version и работоспособность: python -c "print('ok')" (в выводе — ok). Альтернатива — py launcher. Подробнее здесь — первая программа, основы.

Вопрос. Что такое pip и venv в Python простыми словами?

Ответ. pip — установщик пакетов с PyPI; venv — изолированное окружение с своими зависимостями на проект. Без venv пакеты смешиваются между проектами. Подробнее здесь — pip, виртуальные окружения.

Вопрос. Python для data science — с чего начать?

Ответ. Базовый Python → NumPy → pandas → визуализация → scikit-learn. Параллельно — Jupyter и работа с CSV. Подробнее здесь — pandas, NumPy — примеры, практикum Pandas, примеры в Lab, scikit-learn.

Вопрос. Как стать backend-разработчиком на Python?

Ответ. Python → HTTP и REST → Flask или Django → БД и ORM → pytest → деплой. Pet-проект API в портфолио обязателен. Подробнее здесь — веб и REST, FastAPI, pytest.

Вопрос. Сколько учить Python до junior-разработчика?

Ответ. Синтаксис — 1–2 месяца; до junior backend — 6–10 месяцев с фреймворком, SQL и pet-проектами. Data science — отдельный более длинный трек. Подробнее здесь — маршрут intro, чек-лист.

Вопрос. Python 2 и Python 3 — в чём разница, что ставить?

Ответ. Ставьте только Python 3; ветка 2.x снята с поддержки с 2020 года. Старые туториалы с print "x" нужно переписывать. Подробнее здесь — история.

Вопрос. PyCharm или VS Code для Python — что выбрать?

Ответ. PyCharm — сильный рефакторинг и Django из коробки; VS Code — легче, расширение Python + Pylance. Оба подходят; важнее выбрать venv проекта. Подробнее здесь — первая программа, venv.

Вопрос. Python медленный — правда или миф?

Ответ. Для CPU-heavy чистый Python медленнее C/Java, но узкие места выносят в NumPy, C-расширения или multiprocessing. Для веб и скриптов скорость часто достаточна. Подробнее здесь — архитектура CPython, GIL.

Вопрос. Что такое GIL в Python простыми словами?

Ответ. Global Interpreter Lock — один поток байт-кода CPython в момент времени. Потоки не ускоряют CPU-bound; для вычислений — multiprocessing, для сети — asyncio. Подробнее здесь — GIL, многопоточность.

Вопрос. asyncio в Python — когда использовать?

Ответ. Когда много ожидания I/O — сеть, диск, БД — и нужно обслуживать тысячи соединений без потоков на каждое. Для тяжёлых вычислений — не asyncio. Подробнее здесь — асинхронность, FastAPI.

Вопрос. NumPy и pandas — в чём разница?

Ответ. NumPy — массивы и быстрая математика; pandas — таблицы (DataFrame), группировки, merge, работа с CSV. Обычно учат NumPy базово, затем pandas. Подробнее здесь — pandas, NumPy — примеры, практикum, примеры с разбором.

Вопрос. Как написать "Hello, World" на Python?

Ответ. print("Hello, World") в файле hello.py, запуск: python hello.py. Или построчно в REPL (python без аргументов). Подробнее здесь — первая программа.

Вопрос. Python для автоматизации — что можно автоматизировать?

Ответ. Файлы, Excel/CSV, парсинг сайтов (этично), рассылки, CI-скрипты, мониторинг. Стандартная библиотека покрывает много задач без pip. Подробнее здесь — язык общего назначения, файлы — теория, примеры в Lab.

Вопрос. Machine learning на Python с нуля — с чего начать?

Ответ. Python + NumPy/pandas → scikit-learn (классика ML) → при необходимости PyTorch/TensorFlow. Нужна базовая математика и статистика. Подробнее здесь — scikit-learn, PyTorch, раздел ИИ.

Вопрос. Tkinter — можно ли делать GUI на Python?

Ответ. Да: Tkinter в стандартной библиотеке — окна, кнопки, формы для учебных и утилитарных приложений. Для сложного UI — PyQt/Kivy. Подробнее здесь — Tkinter, первая программа Tkinter, галерея примеров.

Вопрос. pytest — как писать тесты на Python?

Ответ. Функции test_*, assert, fixtures; запуск pytest из корня проекта. Для API — TestClient FastAPI/Flask. Подробнее здесь — pytest.

Вопрос. Как создать REST API на Python быстро?

Ответ. Минимальный путь — FastAPI: модели Pydantic, автодок Swagger, async. Альтернатива — Flask + flask-restx или Django + DRF. Подробнее здесь — FastAPI, веб и REST.

Вопрос. Список vs кортеж в Python — когда что использовать?

Ответ. list — изменяемая последовательность; tuple — неизменяемая, хешируемая (ключи dict, координаты). Подробнее здесь — коллекции, типы.

Вопрос. Python для парсинга сайтов — какие библиотеки?

Ответ. requests + BeautifulSoup для статики; для JS-сайтов — Playwright/Selenium. Соблюдайте robots.txt и закон. Подробнее здесь — сетевое программирование, HTTP-клиенты.

Вопрос. Django admin — что это и зачем?

Ответ. Автогенерируемая админ-панель для моделей БД — CRUD без написания UI. Ускоряет внутренние инструменты и учебные проекты. Подробнее здесь — Django — первая программа, справочник Django.


Что запомнить

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

Основные особенности Python:

  • Простота и читаемость: отступы вместо фигурных скобок, минимум синтаксического шума;
  • Богатая стандартная библиотека — модули для работы с файлами, сетью, JSON, регулярными выражениями, многопоточностью и многим другим;
  • Мультипарадигменность — поддержка ООП, функционального стиля, генераторов, контекстных менеджеров;
  • Экосистема — огромное количество сторонних пакетов через PyPI (pip), фреймворков (Django, Flask, FastAPI), библиотек для анализа данных (pandas, NumPy), машинного обучения (scikit-learn, TensorFlow, PyTorch) и автоматизации;
  • Кроссплатформенность — один и тот же код работает на Windows, Linux, macOS без изменений;
  • Интерпретируемость и REPL: возможность запускать код построчно, что ускоряет эксперименты и обучение.

Python активно применяется в следующих сферах:

Ключевые концепции, определяющие эффективность работы с Python:

  1. PEP 8 — официальный стиль написания кода, обеспечивающий единообразие;
  2. Виртуальные окружения — изоляция зависимостей проекта через venv или virtualenv;
  3. Менеджер пакетов pip — установка, обновление и удаление сторонних библиотек;
  4. GIL (Global Interpreter Lock) — в стандартной сборке CPython ограничивает параллельное выполнение байт-кода в потоках; для CPU-bound — multiprocessing, для I/O — threading/asyncio; опционально — free-threaded сборка без GIL (см. историю);
  5. "Pythonic" подход — использование идиоматических конструкций (with, for...else, списковые включения, распаковка и т.д.).

Три основных правила эффективной работы с Python:

  1. Писать код так, чтобы он был понятен даже спустя год — использовать осмысленные имена, документацию, типизацию (typing);
  2. Не повторяться — выносить логику в функции, классы, модули;
  3. Тестировать — использовать unittest, pytest, doctests для обеспечения надёжности.

Три фундаментальных момента:

  • Python — это целая культура разработки, основанная на простоте и явности;
  • Его сила — в экосистеме и сообществе, а не только в синтаксисе;
  • Знание стандартной библиотеки часто заменяет необходимость в сторонних зависимостях.

Проверьте себя: Чек-лист самопроверки — веб, async, pytest.


Куда идти дальше

ТемаРаздел
"JavaScript — о разделе""JavaScript — о разделе"
"Java — о разделе""Java — о разделе"
"Low-code и No-code платформы""Low-code и No-code платформы"
"Документация и инструменты Java (Microsoft)""Документация и инструменты Java (Microsoft)"

Проверьте себя: Чек-лист самопроверки.


Основа по протоколу

Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.