Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
266 changes: 266 additions & 0 deletions python/cpython.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,266 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "8a9e33fd",
"metadata": {},
"outputs": [],
"source": [
"\"\"\"Answers for the CPython and PyPy task.\"\"\""
]
},
{
"cell_type": "markdown",
"id": "eb116052",
"metadata": {},
"source": [
"# [TASK] Cpython\n",
"\n",
"## Введение в Python и CPython\n",
"\n",
"1. Что такое CPython и чем он отличается от Python?\n",
"\n",
"Ответ: Python - это язык программирования, а CPython - это реализация Python и\n",
"одновременно интерпретатор, которым мы обычно пользуемся. CPython написан на\n",
"языке C.\n",
"\n",
"3. Сколько существует реализаций Python, и какая из них самая популярная?\n",
"\n",
"Ответ: у Python есть 6 реализаций. Самая популярная\n",
"реализация - CPython.\n",
"\n",
"4. На каком языке написан CPython?\n",
"\n",
"Ответ: CPython написан на языке C.\n",
"\n",
"## Поиск и установка CPython\n",
"\n",
"5. Кто создал CPython?\n",
"\n",
"Ответ: Python и CPython создал Guido van Rossum.\n",
"\n",
"6. Почему Python считается быстрым, несмотря на то, что это интерпретируемый\n",
"язык?\n",
"\n",
"Ответ: CPython написан на C и вызывает инструкции из C. Поэтому многие\n",
"внутренние части интерпретатора работают быстро.\n",
"\n",
"7. Напишите путь к интерпретатору CPython на вашем компьютере.\n",
"\n",
"Ответ:\n",
"\n",
"```text\n",
"C:\\temp\\cpython-3.13.14\\PCbuild\\amd64\\python.exe\n",
"```\n",
"\n",
"Проверка версии:\n",
"\n",
"```text\n",
"Python 3.13.14\n",
"implementation=cpython\n",
"```\n",
"\n",
"## Структура CPython\n",
"\n",
"8. Что содержится в папке `include` в CPython?\n",
"\n",
"Ответ: в папке `include` лежат заголовочные файлы `.h`, связанные с C API\n",
"CPython. Например, там есть файл `abstract.h`. Через эти файлы видно, что CPython\n",
"реализован на C.\n",
"\n",
"На этом компьютере папка `include` находится здесь:\n",
"\n",
"```text\n",
"C:\\temp\\cpython-3.13.14\\Include\n",
"```\n",
"\n",
"В ней найдено 76 файлов `.h` и 0 файлов `.c`. Примеры файлов: `abstract.h`,\n",
"`boolobject.h`, `bytesobject.h`, `ceval.h`, `compile.h`.\n",
"\n",
"9. Где можно найти исходный код CPython? Дайте ссылку на репозиторий GitHub.\n",
"\n",
"Ответ:\n",
"\n",
"```text\n",
"https://github.com/python/cpython\n",
"```\n",
"\n",
"10. Как работает интерпретатор CPython при выполнении кода?\n",
"\n",
"Ответ: интерпретатор - это программа, которая читает и запускает код\n",
"построчно.\n",
"\n",
"## Запуск файла с помощью CPython\n",
"\n",
"11. Какая команда используется для запуска файла с помощью CPython?\n",
"\n",
"Ответ:\n",
"\n",
"```powershell\n",
"python путь\\до\\файла.py\n",
"```\n",
"\n",
"Если указывать полный путь к собранному интерпретатору:\n",
"\n",
"```powershell\n",
"C:\\temp\\cpython-3.13.14\\PCbuild\\amd64\\python.exe путь\\до\\файла.py\n",
"```\n",
"\n",
"12. Можно ли запускать текстовые файлы через интерпретатор Python? Почему?\n",
"\n",
"Ответ: да, можно. Интерпретатору неважно, какое расширение у файла. Главное,\n",
"чтобы внутри файла был корректный Python-код.\n",
"\n",
"13. Как указать путь к интерпретатору и файлу для выполнения кода?\n",
"\n",
"Ответ: сначала пишем путь до интерпретатора, потом через пробел путь до файла.\n",
"\n",
"```powershell\n",
"C:\\temp\\cpython-3.13.14\\PCbuild\\amd64\\python.exe H:\\Projects\\example.txt\n",
"```\n",
"\n",
"Если в пути есть пробелы, путь нужно взять в кавычки.\n",
"\n",
"## Введение в PyPy\n",
"\n",
"14. Чем PyPy отличается от CPython?\n",
"\n",
"Ответ: PyPy - это другой интерпретатор Python. PyPy работает быстрее CPython,\n",
"но его нельзя применять во всех проектах.\n",
"\n",
"15. Почему PyPy не может использоваться для всех проектов на Python?\n",
"\n",
"Ответ: PyPy не совместим со всеми Python-проектами. Поэтому его используют не\n",
"везде, а точечно для некоторых проектов.\n",
"\n",
"16. Где можно скачать PyPy?\n",
"\n",
"Ответ: PyPy можно скачать на официальном сайте:\n",
"\n",
"```text\n",
"https://www.pypy.org/\n",
"```\n",
"\n",
"## Установка и запуск PyPy\n",
"\n",
"17. Как установить PyPy после скачивания?\n",
"\n",
"Ответ: нужно скачать архив PyPy для своей операционной системы, переместить\n",
"архив в удобное место и распаковать его. После распаковки в папке будет лежать\n",
"интерпретатор PyPy.\n",
"\n",
"18. Как запустить файл с помощью PyPy?\n",
"\n",
"Ответ: нужно указать путь до интерпретатора PyPy и через пробел путь до файла.\n",
"\n",
"```powershell\n",
"pypy путь\\до\\файла.py\n",
"```\n",
"\n",
"Или полным путем:\n",
"\n",
"```powershell\n",
"C:\\путь\\до\\pypy.exe H:\\Projects\\example_pypy.py\n",
"```\n",
"\n",
"19. Почему PyPy выполняет код быстрее, чем CPython?\n",
"\n",
"Ответ: PyPy работает быстрее CPython. Главное отличие для задания - PyPy\n",
"быстрее, но подходит не для всех проектов.\n",
"\n",
"## Практические задания\n",
"\n",
"Задание 1. Поиск и установка CPython.\n",
"\n",
"Ответ: CPython на компьютере есть. Собранный CPython находится здесь:\n",
"\n",
"```text\n",
"C:\\temp\\cpython-3.13.14\\PCbuild\\amd64\\python.exe\n",
"```\n",
"\n",
"Проверка:\n",
"\n",
"```powershell\n",
"C:\\temp\\cpython-3.13.14\\PCbuild\\amd64\\python.exe --version\n",
"```\n",
"\n",
"Результат:\n",
"\n",
"```text\n",
"Python 3.13.14\n",
"```\n",
"\n",
"Задание 2. Исследование структуры CPython.\n",
"\n",
"Ответ: папка `include` находится здесь:\n",
"\n",
"```text\n",
"C:\\temp\\cpython-3.13.14\\Include\n",
"```\n",
"\n",
"В этой папке 76 файлов `.h` и 0 файлов `.c`. Пример такого файла - `abstract.h`.\n",
"\n",
"Задание 3. Запуск файла с помощью CPython.\n",
"\n",
"Ответ: пример файла:\n",
"\n",
"```python\n",
"print(\"Hello from CPython!\")\n",
"```\n",
"\n",
"Запуск через CPython:\n",
"\n",
"```powershell\n",
"C:\\temp\\cpython-3.13.14\\PCbuild\\amd64\\python.exe путь\\до\\example.txt\n",
"```\n",
"\n",
"Ожидаемый вывод:\n",
"\n",
"```text\n",
"Hello from CPython!\n",
"```\n",
"\n",
"Такой же запуск можно сделать после переименования файла в `example.py`.\n",
"\n",
"Задание 4. Установка и использование PyPy.\n",
"\n",
"Ответ: нужно скачать PyPy с официального сайта, распаковать архив и запустить\n",
"файл через интерпретатор PyPy.\n",
"\n",
"Пример файла:\n",
"\n",
"```python\n",
"print(\"Hello from pypy!\")\n",
"```\n",
"\n",
"Пример запуска:\n",
"\n",
"```powershell\n",
"pypy путь\\до\\example_pypy.py\n",
"```\n",
"\n",
"Ожидаемый вывод:\n",
"\n",
"```text\n",
"Hello from pypy!\n",
"```\n",
"\n",
"Задание 5. Сравнение производительности CPython и PyPy.\n",
"\n",
"Ответ: для сравнения нужно запустить один и тот же `performance_test.py` сначала\n",
"через CPython, затем через PyPy и сравнить строку `Execution time`. PyPy должен работать быстрее CPython, но использовать его можно не для всех\n",
"проектов."
]
}
],
"metadata": {
"jupytext": {
"cell_metadata_filter": "-all",
"formats": "ipynb,py:light",
"main_language": "python"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Loading
Loading