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 активно применяется в следующих сферах:
- Веб-разработка — Django, Flask, FastAPI;
- Научные вычисления и анализ данных: pandas, NumPy, NumPy — примеры, практикум Pandas, примеры типовых операций, SymPy — уравнения и производные;
- Машинное обучение: scikit-learn, PyTorch, раздел ИИ;
- Сети: HTTP-клиенты в главе 31, сокеты и справочник библиотек в главе 315;
- Автоматизация и DevOps — скрипты для CI/CD, управления инфраструктурой, тестирования;
- Десктопные приложения: Tkinter, примеры GUI в Lab, PyQt, Kivy;
- Образование: один из самых популярных языков для обучения программированию.
Ключевые концепции, определяющие эффективность работы с Python:
- PEP 8 — официальный стиль написания кода, обеспечивающий единообразие;
- Виртуальные окружения — изоляция зависимостей проекта через
venvилиvirtualenv; - Менеджер пакетов pip — установка, обновление и удаление сторонних библиотек;
- GIL (Global Interpreter Lock) — в стандартной сборке CPython ограничивает параллельное выполнение байт-кода в потоках; для CPU-bound —
multiprocessing, для I/O —threading/asyncio; опционально — free-threaded сборка без GIL (см. историю); - "Pythonic" подход — использование идиоматических конструкций (
with,for...else, списковые включения, распаковка и т.д.).
Три основных правила эффективной работы с Python:
- Писать код так, чтобы он был понятен даже спустя год — использовать осмысленные имена, документацию, типизацию (
typing); - Не повторяться — выносить логику в функции, классы, модули;
- Тестировать — использовать
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 как основа веб-интеграций.