diff --git a/python/cpython.ipynb b/python/cpython.ipynb new file mode 100644 index 00000000..baee8196 --- /dev/null +++ b/python/cpython.ipynb @@ -0,0 +1,463 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "97e6b51f", + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"Ответы на вопросы по CPython.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "id": "79e3d276", + "metadata": {}, + "source": [ + "**1. Что такое CPython и чем он отличается от Python?**\n", + "\n", + "CPython - это самый распространенный интрепретатор Python. Отличие в том, что Python - это сам язык, а CPython - один из инструментов, который позволяет писать и выполнять программы на этом языке." + ] + }, + { + "cell_type": "markdown", + "id": "952b9e80", + "metadata": {}, + "source": [ + "**3. Сколько существует реализаций Python, и какая из них самая популярная?**\n", + "\n", + "Всего существует 6 реализаций, самая популярная - CPython. Также существуют PyPy, Jython, IronPython, MicroPython, Brython" + ] + }, + { + "cell_type": "markdown", + "id": "392d8651", + "metadata": {}, + "source": [ + "**4. На каком языке написан CPython?**\n", + "\n", + "На языке программирования C" + ] + }, + { + "cell_type": "markdown", + "id": "2b2e9129", + "metadata": {}, + "source": [ + "**5. (опционально) Кто создал CPython?**\n", + "\n", + "Гвидо ван Россум" + ] + }, + { + "cell_type": "markdown", + "id": "fa557791", + "metadata": {}, + "source": [ + "**6. Почему Python считается быстрым, несмотря на то, что это интерпретируемый язык?**\n", + "\n", + "Потому как ядро Python на C, довольно много библиотек так же написаны на Python и хорошо оптимизированы" + ] + }, + { + "cell_type": "markdown", + "id": "ca74af0d", + "metadata": {}, + "source": [ + "**7. Напишите путь к Интерпретатору CPython на вашем компьютере**\n", + "\n", + "\"C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python312\\python.exe\"" + ] + }, + { + "cell_type": "markdown", + "id": "57843b72", + "metadata": {}, + "source": [ + "**8.Что содержится в папке include в CPython?**\n", + "\n", + "Здесь содержатся заголовочные файлы (с расширением .h), необходимые для разработки и сборки C-расширений для Python" + ] + }, + { + "cell_type": "markdown", + "id": "2dd50d2b", + "metadata": {}, + "source": [ + "**9.Где можно найти исходный код CPython дайте ссылку на репозиторий гитхаб**\n", + "\n", + "https://github.com/python/cpython" + ] + }, + { + "cell_type": "markdown", + "id": "45661669", + "metadata": {}, + "source": [ + "**10.Как работает интерпретатор CPython при выполнении кода?**\n", + "\n", + "Инициализируется интрепретатор -> Код конвертируется в байт-код -> Интрепретатор выполняет инструкции байт-кода" + ] + }, + { + "cell_type": "markdown", + "id": "1489c68f", + "metadata": {}, + "source": [ + "**11. Какая команда используется для запуска файла с помощью CPython?**\n", + "\n", + "python" + ] + }, + { + "cell_type": "markdown", + "id": "4f812f2d", + "metadata": {}, + "source": [ + "**12. Можно ли запускать текстовые файлы через интерпретатор Python? Почему?**\n", + "\n", + "Да. Интрепретатор работает непосредственно с содержимым файла, игнорируя расширение" + ] + }, + { + "cell_type": "markdown", + "id": "94794d7a", + "metadata": {}, + "source": [ + "**13. Как указать путь к интерпретатору и файлу для выполнения кода?**\n", + "\n", + "В терминале ввести <путь до интерпретатора> <путь до файла>" + ] + }, + { + "cell_type": "markdown", + "id": "1f541b9e", + "metadata": {}, + "source": [ + "**14. Чем PyPy отличается от CPython?**\n", + "\n", + "PyPy - это высокопроизводительная альтернативная реализация Python, использующая JIT-компиляцию (Just-in-Time), что делает её в 4–10 раз быстрее стандартного CPython в вычислительных задачах" + ] + }, + { + "cell_type": "markdown", + "id": "1289ba71", + "metadata": {}, + "source": [ + "**15. Почему PyPy не может использоваться для всех проектов на Python?**\n", + "\n", + "Он плохо работает с библиотеками, написанными на C (например, numpy), потребляет много памяти и не так эффективен на коротких скриптах" + ] + }, + { + "cell_type": "markdown", + "id": "58653997", + "metadata": {}, + "source": [ + "**16. Где можно скачать PyPy?**\n", + "\n", + "https://pypy.org" + ] + }, + { + "cell_type": "markdown", + "id": "78924de0", + "metadata": {}, + "source": [ + "**17. Как установить PyPy после скачивания?**\n", + "\n", + "Встроенного установщика нет, поэтому нужно распаковать архив" + ] + }, + { + "cell_type": "markdown", + "id": "8c1aa522", + "metadata": {}, + "source": [ + "**18. Как запустить файл с помощью PyPy?**\n", + "\n", + "В терминале ввести <путь до интерпретатора PyPy> <путь до файла>" + ] + }, + { + "cell_type": "markdown", + "id": "bbdea4cc", + "metadata": {}, + "source": [ + "**19. Почему PyPy выполняет код быстрее, чем CPython?**\n", + "\n", + "PyPy работает быстрее CPython благодаря использованию JIT-компиляции. В отличие от интерпретатора CPython, который выполняет байт-код построчно, PyPy анализирует код во время выполнения и компилирует часто используемые участки (циклы) в машинный код, значительно ускоряя вычисления." + ] + }, + { + "cell_type": "markdown", + "id": "3cf365a2", + "metadata": {}, + "source": [ + "### Практические задания" + ] + }, + { + "cell_type": "markdown", + "id": "2361f360", + "metadata": {}, + "source": [ + "**Задание 1: Поиск и установка CPython**\n", + "Проверьте, установлен ли CPython на вашем компьютере:\n", + " Используйте поиск в меню \"Пуск\" (Windows) или терминале (Linux/Mac).\n", + " Введите команду python --version или python3 --version в терминале.\n", + "Если CPython не установлен, скачайте его с официального сайта Python https://www.python.org/downloads/ и установите." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f1899ca8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Python 3.12.6\n" + ] + } + ], + "source": [ + "!python --version " + ] + }, + { + "cell_type": "markdown", + "id": "804729e9", + "metadata": {}, + "source": [ + "**Задание 2: Исследование структуры CPython**\n", + "Найдите папку, где установлен Python (например, через команду where python в терминале или свойства ярлыка).\n", + "Откройте папку include и изучите её содержимое. Какое количество файлов на C там есть?\n", + "Перейдите на [GitHub-репозиторий CPython](https://github.com/python/cpython) и найдите файл README. Прочитайте информацию о проекте." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "cede8e53", + "metadata": {}, + "outputs": [], + "source": [ + "import os" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dacc01e0", + "metadata": {}, + "outputs": [], + "source": [ + "def count_h_files(directory: str) -> None:\n", + " \"\"\"Подсчитывает число файлов с расширением .h в каталоге и выводит результат.\"\"\"\n", + " count = 0\n", + " for _, _, files in os.walk(directory):\n", + " for filename in files:\n", + " if filename.endswith(\".h\"):\n", + " count += 1\n", + " print(\"Количество файлов на C в папке include:\", count)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "33b8ae10", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Количество файлов на C в папке include: 215\n" + ] + } + ], + "source": [ + "count_h_files(\"C:\\\\Users\\\\user\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python312\\\\include\")" + ] + }, + { + "cell_type": "markdown", + "id": "477fc439", + "metadata": {}, + "source": [ + "**Задание 3: Запуск файла с помощью CPython**\n", + "Создайте текстовый файл example.txt с содержимым:\n", + "print(\"Hello from CPython!\")\n", + "Запустите файл через команду python <путь_до_файла> (замените <путь_до_файла> на фактический путь к вашему файлу).\n", + "Проверьте, что выводится на экран. Попробуйте изменить расширение файла на .py и повторите запуск." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9f5729df", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello from Cpython!\n" + ] + } + ], + "source": [ + "# !python \"C:\\Users\\user\\Documents\\GitHub\\Data-Science-For-Beginners-from-scratch-SENATOROV\\python\\example.txt\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2292a009", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello from Cpython!\n" + ] + } + ], + "source": [ + "# !python \"C:\\Users\\user\\Documents\\GitHub\\Data-Science-For-Beginners-from-scratch-SENATOROV\\python\\example.py\"" + ] + }, + { + "cell_type": "markdown", + "id": "aaad6bc6", + "metadata": {}, + "source": [ + "**Задание 4: Установка и использование PyPy**\n", + "\n", + "Перейдите на [официальный сайт PyPy](https://www.pypy.org/) и скачайте подходящую версию для вашей операционной системы.\n", + "Распакуйте скачанный архив в удобное место.\n", + "Создайте файл example_pypy.py с кодом:\n", + "print(\"Hello from pypy!\")\n", + "\n", + "Запустите файл через PyPy\n", + "pypy <путь_до_файла> (замените <путь_до_файла> на фактический путь к вашему файлу).\n", + "Проверьте, что выводится на экран. Попробуйте изменить расширение файла на .py и повторите запуск." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e48c2977", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello from pypy!\n" + ] + } + ], + "source": [ + "# !\"C:\\Users\\user\\Downloads\\pypy3.11-v7.3.21-win64\\pypy3.11-v7.3.21-win64\\pypy.exe\"\n", + "# \"C:\\Users\\MikkyToto\\Documents\\GitHub\\Data-Science-For-Beginners-from-scratch-SENATOROV\\python\\example_pypy.py\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e5718fc6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello from pypy!\n" + ] + } + ], + "source": [ + "# !\"C:\\Users\\user\\Downloads\\pypy3.11-v7.3.21-win64\\pypy3.11-v7.3.21-win64\\pypy.exe\"\n", + "# \"C:\\Users\\MikkyToto\\Documents\\GitHub\\Data-Science-For-Beginners-from-scratch-SENATOROV\\python\\example_pypy.txt\"" + ] + }, + { + "cell_type": "markdown", + "id": "33ffc757", + "metadata": {}, + "source": [ + "**Задание 5: Сравнение производительности CPython и PyPy**\n", + "\n", + "Создайте файл performance_test.py с кодом.\n", + "Запустите этот файл сначала через CPython, а затем через PyPy. Запишите результаты времени выполнения для обоих интерпретаторов.\n", + "Сделайте вывод о разнице в производительности." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1e8a1c8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Result: 49999995000000\n", + "Execution time: 1.1002681255340576 seconds\n" + ] + } + ], + "source": [ + "# !python \"C:\\Users\\user\\Documents\\GitHub\\Data-Science-For-Beginners-from-scratch-SENATOROV\\python\\performance_test.py\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4c6ecb35", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Result: 49999995000000\n", + "Execution time: 0.0178983211517334 seconds\n" + ] + } + ], + "source": [ + "# !\"C:\\Users\\user\\Downloads\\pypy3.11-v7.3.21-win64\\pypy3.11-v7.3.21-win64\\pypy.exe\"\n", + "# \"C:\\Users\\user\\Documents\\GitHub\\Data-Science-For-Beginners-from-scratch-SENATOROV\\python\\performance_test.py\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/python/cpython.py b/python/cpython.py new file mode 100644 index 00000000..5ad43a9e --- /dev/null +++ b/python/cpython.py @@ -0,0 +1,176 @@ +"""Ответы на вопросы по CPython.""" + +# **1. Что такое CPython и чем он отличается от Python?** +# +# CPython - это самый распространенный интрепретатор Python. Отличие в том, что Python - это сам язык, а CPython - один из инструментов, который позволяет писать и выполнять программы на этом языке. + +# **3. Сколько существует реализаций Python, и какая из них самая популярная?** +# +# Всего существует 6 реализаций, самая популярная - CPython. Также существуют PyPy, Jython, IronPython, MicroPython, Brython + +# **4. На каком языке написан CPython?** +# +# На языке программирования C + +# **5. (опционально) Кто создал CPython?** +# +# Гвидо ван Россум + +# **6. Почему Python считается быстрым, несмотря на то, что это интерпретируемый язык?** +# +# Потому как ядро Python на C, довольно много библиотек так же написаны на Python и хорошо оптимизированы + +# **7. Напишите путь к Интерпретатору CPython на вашем компьютере** +# +# "C:\Users\user\AppData\Local\Programs\Python\Python312\python.exe" + +# **8.Что содержится в папке include в CPython?** +# +# Здесь содержатся заголовочные файлы (с расширением .h), необходимые для разработки и сборки C-расширений для Python + +# **9.Где можно найти исходный код CPython дайте ссылку на репозиторий гитхаб** +# +# https://github.com/python/cpython + +# **10.Как работает интерпретатор CPython при выполнении кода?** +# +# Инициализируется интрепретатор -> Код конвертируется в байт-код -> Интрепретатор выполняет инструкции байт-кода + +# **11. Какая команда используется для запуска файла с помощью CPython?** +# +# python + +# **12. Можно ли запускать текстовые файлы через интерпретатор Python? Почему?** +# +# Да. Интрепретатор работает непосредственно с содержимым файла, игнорируя расширение + +# **13. Как указать путь к интерпретатору и файлу для выполнения кода?** +# +# В терминале ввести <путь до интерпретатора> <путь до файла> + +# **14. Чем PyPy отличается от CPython?** +# +# PyPy - это высокопроизводительная альтернативная реализация Python, использующая JIT-компиляцию (Just-in-Time), что делает её в 4–10 раз быстрее стандартного CPython в вычислительных задачах + +# **15. Почему PyPy не может использоваться для всех проектов на Python?** +# +# Он плохо работает с библиотеками, написанными на C (например, numpy), потребляет много памяти и не так эффективен на коротких скриптах + +# **16. Где можно скачать PyPy?** +# +# https://pypy.org + +# **17. Как установить PyPy после скачивания?** +# +# Встроенного установщика нет, поэтому нужно распаковать архив + +# **18. Как запустить файл с помощью PyPy?** +# +# В терминале ввести <путь до интерпретатора PyPy> <путь до файла> + +# **19. Почему PyPy выполняет код быстрее, чем CPython?** +# +# PyPy работает быстрее CPython благодаря использованию JIT-компиляции. В отличие от интерпретатора CPython, который выполняет байт-код построчно, PyPy анализирует код во время выполнения и компилирует часто используемые участки (циклы) в машинный код, значительно ускоряя вычисления. + +# ### Практические задания + +# **Задание 1: Поиск и установка CPython** +# Проверьте, установлен ли CPython на вашем компьютере: +# Используйте поиск в меню "Пуск" (Windows) или терминале (Linux/Mac). +# Введите команду python --version или python3 --version в терминале. +# Если CPython не установлен, скачайте его с официального сайта Python https://www.python.org/downloads/ и установите. + +# In[2]: +import os + +# get_ipython().system("python --version") +# вывоб: 3.12.6 + + +# **Задание 2: Исследование структуры CPython** +# Найдите папку, где установлен Python (например, через команду where python в терминале или свойства ярлыка). +# Откройте папку include и изучите её содержимое. Какое количество файлов на C там есть? +# Перейдите на [GitHub-репозиторий CPython](https://github.com/python/cpython) и найдите файл README. Прочитайте информацию о проекте. + + +def count_h_files(directory: str) -> None: + """Подсчитывает число файлов с расширением .h в каталоге и выводит + результат.""" + count = 0 + for _, _, files in os.walk(directory): + for filename in files: + if filename.endswith(".h"): + count += 1 + print("Количество файлов на C в папке include:", count) + + +count_h_files("C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python312\\include") + + +# вывод: 215 + + +# **Задание 3: Запуск файла с помощью CPython** +# Создайте текстовый файл example.txt с содержимым: +# print("Hello from CPython!") +# Запустите файл через команду python <путь_до_файла> (замените <путь_до_файла> на фактический путь к вашему файлу). +# Проверьте, что выводится на экран. Попробуйте изменить расширение файла на .py и повторите запуск. + +# In[ ]: + + +# !python "C:\Users\user\Documents\GitHub\Data-Science-For-Beginners-from-scratch-SENATOROV\python\example.txt" +# вывод: Hello from Cpython! + +# !python "C:\Users\user\Documents\GitHub\Data-Science-For-Beginners-from-scratch-SENATOROV\python\example.py" +# вывод: Hello from Cpython! + + +# **Задание 4: Установка и использование PyPy** +# +# Перейдите на [официальный сайт PyPy](https://www.pypy.org/) и скачайте подходящую версию для вашей операционной системы. +# Распакуйте скачанный архив в удобное место. +# Создайте файл example_pypy.py с кодом: +# print("Hello from pypy!") +# +# Запустите файл через PyPy +# pypy <путь_до_файла> (замените <путь_до_файла> на фактический путь к вашему файлу). +# Проверьте, что выводится на экран. Попробуйте изменить расширение файла на .py и повторите запуск. + +# In[ ]: + + +# !"C:\Users\user\Downloads\pypy3.11-v7.3.21-win64\pypy3.11-v7.3.21-win64\pypy.exe" +# "C:\Users\MikkyToto\Documents\GitHub\Data-Science-For-Beginners-from-scratch-SENATOROV\python\example_pypy.py" +# вывод: Hello from pypy! + + +# In[ ]: + + +# !"C:\Users\user\Downloads\pypy3.11-v7.3.21-win64\pypy3.11-v7.3.21-win64\pypy.exe" +# "C:\Users\MikkyToto\Documents\GitHub\Data-Science-For-Beginners-from-scratch-SENATOROV\python\example_pypy.txt" +# вывод: Hello from pypy! + + +# **Задание 5: Сравнение производительности CPython и PyPy** +# +# Создайте файл performance_test.py с кодом. +# Запустите этот файл сначала через CPython, а затем через PyPy. Запишите результаты времени выполнения для обоих интерпретаторов. +# Сделайте вывод о разнице в производительности. + +# In[ ]: + + +# !python "C:\Users\user\Documents\GitHub\Data-Science-For-Beginners-from-scratch-SENATOROV\python\performance_test.py" +# вывод: Result: 49999995000000 +# Execution time: 1.1002681255340576 seconds + + +# In[ ]: + + +# !"C:\Users\user\Downloads\pypy3.11-v7.3.21-win64\pypy3.11-v7.3.21-win64\pypy.exe" +# "C:\Users\user\Documents\GitHub\Data-Science-For-Beginners-from-scratch-SENATOROV\python\performance_test.py" +# вывод: Result: 49999995000000 +# Execution time: 0.0178983211517334 seconds