Как сделать интерпретатор питона

Обновлено: 07.07.2024

Чтобы начать играть с Python, нам нужно открыть командную строку на твоём компьютере. Ты уже должна знать, как это сделать — мы изучали это в главе Введение в интерфейс командной строки.

Когда будешь готова, следуй приведенным ниже инструкциям.

Мы хотим открыть консоль Python, так что набери python , если работаешь в Windows, или python3 для Mac OS/Linux, и нажми enter .

Твоя первая команда Python!

После запуска Python командная строка изменилась на >>> . Для нас это означает, что сейчас мы можем использовать только команды на языке Python. Тебе не нужно вводить >>> — Python будет делать это за нас.

Если ты хочешь выйти из консоли Python, в любой момент — просто введи exit() или используй сочетание клавиш Ctrl + Z для Windows и Ctrl + D для Mac/Linux. Тогда ты больше не будешь видеть >>> .

Пока что мы не хотим выходить из консоли Python. Мы хотим узнать больше о ней. Давай начнём с чего-нибудь совсем простого. Например, попробуй набрать простое математическое выражение, вроде 2 + 3 , и нажми enter .

Прекрасно! Видишь, как выскочил ответ? Python знает математику! Ты можешь попробовать другие команды, например:

Чтобы вычислить степень числа, например, 2 в кубе, мы вводим:

Поиграй с этим немного и затем вернись сюда :).

Как видишь, Python является прекрасным калькулятором. Если тебе интересно, что ещё можно сделать.

Строки

Как насчет твоего имени? Введи своё имя в кавычках, вот так:

Ты только что создала свою первую строку! Это последовательность символов, которые могут быть обработаны компьютером. Строка должна всегда начинаться и заканчиваться одинаковым символом. Им может быть одинарная ( ' ) или двойная ( " ) кавычка (разницы нет!) Кавычки говорят Python'у, что внутри них находится строка.

Строки могут быть слиты воедино. Попробуй так:

Ты также можешь умножать строки на число:

Если тебе нужно поставить апостроф внутри строки, то есть два способа сделать это.

Используй двойные кавычки:

или поставь перед апострофом обратную косую черту ( \ ):

Прикольно, да? Чтобы увидеть своё имя прописными буквами, просто набери:

Ты только что использовала метод upper своей строки! Метод (такой как upper() ) представляет собой набор инструкций, который должен выполнить Python над заданным объектом (в нашем случае: "Ola" ) при его вызове.

Если ты хочешь узнать количество букв в своём имени, то и для этого тоже существует функция!

Интересно, почему иногда мы вызываем функцию добавлением . к концу строки (как "Ola".upper() ), а иногда сначала пишем имя функции и затем помещаем строку в скобки? Ну, в некоторых случаях функции принадлежат объектам, например, функция upper() , которая может быть применена только к строкам. В этом случае мы называем функцию методом. В другом случае функции не относятся к чему-то конкретному и могут использоваться для различных типов объектов, например, функция len() . Вот почему мы передаем "Ola" в качестве параметра функции len .

Подведём итог

Хорошо, достаточно о строках. Пока ты узнала следующее:

  • командная строка — ввод команд (кода) в интерактивную командную строку Python приводит к ответам на Python;
  • числа и строки — в Python числа используются для вычислений, а строки - для текстовых объектов;
  • операторы, такие как + и *, объединяют значения для получения нового;
  • функции, такие как upper() и len(), выполняют действия над объектами.

Таковы основы каждого языка программирования, который ты можешь выучить. Готова к чему-то посложнее? Мы уверены, что готова!

Ошибки

Давай попробуем кое-что новенькое. Можем ли мы получить длину числа так же, как длину твоего имени? Введи len(304023) и нажми Enter :

Мы получили нашу первую ошибку! Иконкой мы будем обозначать код, который при запуске сработает не так, как ожидается. Совершение ошибок (даже преднамеренных) -- важная часть обучения!

Сработало! Мы использовали функцию str внутри функции len . str() преобразует всё в строки.

  • Функция str преобразует объекты в строки
  • Функция int преобразует объекты в целые числа

Важно: мы можем преобразовать число в текст, но не всегда удается преобразовать текст в числа — например, каков будет результат int('hello') ?

Переменные

Переменные — важное понятие в программировании. Переменная — это всего лишь имя для чего-то, чтобы использовать его позднее. Программисты используют переменные для хранения данных, чтобы их код был более читабельным, и для того, чтобы им не пришлось запоминать, что есть что.

Допустим, мы хотим создать новую переменную с именем name :

Видишь? Это очень легко! Просто введи: name равно Ola.

Как ты уже заметила, твоя программа не возвращает ничего, как было ранее. Так откуда мы знаем, что переменная действительно существует? Просто введи name и нажми Enter :

Ура! Твоя первая переменная:)! Ты всегда можешь изменить то, к чему она относится:

Ты также можешь использовать переменные и в функциях:

Круто, правда? Переменными, конечно, может быть что угодно, и цифры тоже! Попробуй следующее:

Но что делать, если мы использовали неправильное имя? Можешь догадаться, что произойдет? Давай попробуем!

Ошибка! Как ты можешь видеть, в Python есть различные типы ошибок, эта называется NameError. Python выдаст эту ошибку при попытке использовать переменную, которая пока не определена. При возникновении этой ошибки проверь свой код, чтобы узнать, не написала ли ты неправильно имя переменной.

Попрактикуйся в этом какое-то время и посмотри, что ты сможешь сделать!

Функция print

Если просто ввести name , интерпретатор Python вернет строковое представление переменной 'name', которым, в нашем случае, являются буквы M-a-r-i-a, окруженные одинарными кавычками, ''. Когда ты вводишь print(name) , Python "печатает" содержание переменной на экран, без кавычек, что удобнее.

Как мы увидим позднее, print() пригодится, когда нам будет нужно печатать что-то изнутри функций или когда мы захотим напечатать что-то на нескольких строчках.

Списки

Помимо строк и целых чисел Python имеет богатую коллекцию других типов объектов. Сейчас мы собираемся представить тебе один из них — list (список). Списки — это именно то, о чём ты подумала: объекты, которые являются списками других объектов :)

Давай начнем с создания списка:

Отлично, это пустой список. Не особенно полезен, да? Давай создадим список лотерейных номеров. Мы не хотим повторять их каждый раз, так что присвоим список переменной:

Замечательно, у нас есть список! Что мы можем с ним сделать? Для начала посмотрим, как много лотерейных номеров в нашем списке. Есть идеи, какую функцию можно использовать для этого? Ты её уже знаешь!

Точно! len() вернет тебе количество объектов в списке. Удобно, правда? Пожалуй, мы теперь отсортируем его:

Эта команда не возвращает ничего, она просто меняет порядок номеров в списке. Давайте выведем его на экран и посмотрим, что получилось:

Как видишь, номера в списке теперь отсортированы от меньшего к большему. Поздравляем!

Может, нам нужно обратить порядок? Давай сделаем это!

Просто, правда? Если хочешь добавить что-то к своему списку, то можешь воспользоваться этой командой:

Если ты хочешь получить только первый номер в списке, то можешь воспользоваться индексами. Индекс — это номер позиции в списке, на котором находится нужное нам значение. Программисты предпочитают начать считать с 0, так что первому объекту в списке соответствует индекс 0, следующему —1, и так далее. Попробуй ввести:

Как видишь, ты можешь обратиться к различным объектам в своем списке, используя имя списка и индекс объекта в квадратных скобках.

Чтобы удалить что-либо из списка, тебе понадобятся индексы, с которыми мы уже разобрались выше, и команда pop() . Давай попробуем закрепить пройденное на примере: мы будем удалять первый элемент из нашего списка.

Сработало как по маслу!

В качестве дополнительной тренировки попробуй следующие индексы: 6, 7, 1000, -1, -6 и -1000. Можешь предсказать результат? Видишь логику работы?

Словари

Для проходящих руководство дома: этот раздел рассмотрен в видео Python Basics: Dictionaries.

Словари схожи со списками, но ты обращаешься к значениям словаря по ключу, а не по индексу. Ключом может быть любая строка или число. Давай создадим пустой словарь:

Это показывает, что мы создали пустой словарь. Ура!

Теперь попробуй следующую команду (можешь заменить значения на своё имя, страну и т.д.):

Этой командой ты создала переменную participant с тремя парами ключ/значение:

  • ключ name , указывающий на значение 'Ola' (объект типа строка ),
  • ключ country , указывающий на значение 'Poland' (еще одна строка ),
  • и ключ favorite_numbers , указывающий на значение [7, 42, 92] (объект типа список с тремя числами внутри).

Значение конкретного ключа можно узнать следующим образом:

Видишь, синтаксис похож на работу со списком. Но вместо того, чтобы запоминать индекс, тебе нужно помнить ключ.

Что случится, если мы спросим у Python значение несуществующего в словаре ключа? Можешь предположить? Давай попробуем и узнаем наверняка!

Смотри, другая ошибка! Эта называется KeyError. Python услужливо напоминает, что ключа 'age' нет в словаре.

Когда стоит использовать словарь, а когда список? Это хороший вопрос для самостоятельного размышления. Сделай предположение перед тем, как читать дальше.

  • Тебе нужна упорядоченная последовательность элементов? Список — наш выбор.
  • Тебе нужны сочетания ключ/значение, чтобы быстро искать значения (по ключу) в дальнейшем? Словарь отлично подойдет.

Словари, как и списки, изменяемы, т. е. они могут быть изменены после того, как были созданы. Ты можешь добавить новые пары ключ/значение в словарь следующим образом:

Так же как в примере со списками, использование функции len() вернёт число пар ключ/значение в словаре. Попробуй сама:

Надеюсь, всё вышеизложенное понятно. :) Готова к новым приключениям со словарями? На следующей строке тебя ждут изумительные вещи.

Ты можешь использовать команду pop() для удаления элементов из словаря. Скажем, ты хочешь удалить элемент с ключом 'favorite_numbers' . Просто набери следующую команду:

Как видишь, пара ключ/значение с ключом 'favorite_numbers' была удалена.

Помимо этого, ты можешь заменить значение, связанное с уже существующим ключом. Набери:

Значение, на которое ссылается ключ 'country' , изменилось с 'Poland' на 'Germany' . :) Захватывает? Ещё бы! Ты выучила еще одну потрясающую штуку!

Подведём итог

Шикарно! Теперь ты знаешь немало о программировании. Мы познакомились с:

  • ошибками — теперь ты знаешь как читать и анализировать ошибки, которые возникают, если Python не понимает твоей команды;
  • переменными — именами для объектов, которые упрощают твой код и делают его более читабельным;
  • списками — последовательностями объектов в заданном порядке;
  • словарями — объектами, хранящими пары ключ/значение.

Готова к продолжению? :)

Сравнения

Для проходящих руководство дома: этот раздел рассмотрен в видео Python Basics: Comparisons.

В программировании часто надо что-то сравнивать. Что проще всего сравнить друг с другом? Числа, конечно. Давай посмотрим, как это работает:

Мы передали Python несколько чисел для сравнения. Как ты можешь заметить, Python сравнивает не только числа, но и результаты методов (например, умножения). Неплохо, правда?

Хочешь спросить, почему мы написали двойной символ равенства == , чтобы проверить, одинаковы ли числа? Потому что одинарные символ равенства = уже задействован под присваивание значения переменным. Ты всегда, всегда должна писать два символа равенства == , если хочешь проверить, одинаковы ли объекты. Мы также можем проверить, различаются ли объекты. Для этого мы используем != , как показано в примере выше.

Дадим Python еще два задания:

С > и все понятно, но что значат >= и ? Читай их следующим образом:

  • x > y означает: x больше y
  • x y означает: x меньше y
  • x y означает: x меньше или равен y
  • x >= y означает: x больше или равен y

Супер! Хочешь еще? Тогда попробуй вот это:

Ты можешь передать Python столько чисел, сколько захочешь, и он будет возвращать ответ! Хитро, правда?

  • and — если ты используешь оператор and , оба сравнения по обе стороны от него должны быть True (верны), чтобы результат всей команды был равен True.
  • or — если ты используешь оператор or , достаточно одному из сравнений по обе стороны от него быть равным True, чтобы результат всей команды также равнялся True.

Ты когда-нибудь слышала выражение "сравнивать тёплое с мягким"? Попробуем сделать что-то подобное в Python:

Как мы видим, Python не знает, как сравнить число ( int ) и строку ( str ) между собой. Поэтому он просто возвращает нам ошибку TypeError и предупреждает, что объекты заданных типов не могут быть сравнены.

Логические значения

Между прочим, ты только что познакомилась с новым типом объектов в Python. Он называется Boolean (логический) — и это, наверное, самый простой тип из всех.

Существует только два логических объекта в Python:

Чтобы Python понимал тебя, ты всегда должна писать True с заглавной буквы (остальные прописные). true, TRUE, tRUE не будут восприниматься — только True. (Та же логика применима к False, само собой.)

Ты можешь присваивать переменным логические значения! Смотри сюда:

Попрактикуйся с логическими значениями на примере этих выражений:

  • True and True
  • False and True
  • True or 1 == 1
  • 1 != 2

Поздравляем! Логические значения — одна из самых классных фишек программирования, и ты только что научилась ими пользоваться!

До сих пор мы писали весь код в интерактивной консоли, где Python сразу анализировал, обрабатывал и выполнял наши команды. Мы были ограничены одной строкой. Обычно, программы сохраняются в файлах и выполняются интерпретатором или компилятором нашего языка программирования. Пока мы только просили интерпретатор Python выполнять наши однострочные команды из консоли. Однако нам понадобится больше места для следующих задач, поэтому задача минимум:

  • закрыть интерактивную консоль Python;
  • открыть наш текстовый редактор;
  • сохранить код в новом файле;
  • запустить его!

Чтобы закрыть интерактивную консоль Python, просто набери функцию exit() :

Это вернёт тебя в командную строку.

В главе Текстовый редактор мы выбрали себе редактор. Нам нужно открыть его сейчас и записать следующий код в новый файл (или, если ты используешь Chromebook, создай новый файл в облачной IDE и открой файл, который будет во встроенном редакторе кода):

Очевидно, ты уже искушенный Python разработчик, так что не стесняйся добавить что-нибудь по своему вкусу из ранее изученного.

Теперь нам нужно сохранить файл с кодом и дать ему подходящее имя. Давай назовем его python_intro.py и сохраним на рабочий стол. Мы можем назвать файл как хотим, но важно, чтобы название заканчивалось на .py. Расширение .py говорит операционной системе, что это исполняемый файл python, и Python может его запустить.

После сохранения файла пришло время запустить его! Используя навыки из раздела о командной строке, открой терминал и поменяй текущую директорию на рабочий стол.

Это пошаговое руководство для начинающих работу с Python в Windows 10.

Настройка среды разработки

Для начинающих, которые не знакомы с Python, рекомендуется установить Python из Microsoft Store. При установке из Microsoft Store используется базовый интерпретатор Python3, но в дополнение к автоматическому обновлению также настраиваются параметры пути для текущего пользователя (без необходимости доступа администратора). Это особенно полезно, если вы работаете из среды образовательного учреждения или являетесь частью организации, которая ограничивает разрешения или административный доступ на компьютере.

Установка Python

Чтобы установить Python с помощью Microsoft Store, сделайте следующее:

Перейдите в меню Пуск (значок Windows в нижнем левом углу), введите "Microsoft Store" и щелкните ссылку, чтобы открыть магазин.

После того как Python завершит процесс загрузки и установки, откройте Windows PowerShell, используя меню Пуск (значок Windows в нижнем левом углу). После открытия PowerShell введите Python --version , чтобы убедиться, что Python 3 установлен на компьютере.

Установка Python из Microsoft Store содержит стандартный диспетчер пакетов pip. Pip позволяет устанавливать дополнительные пакеты, которые не входят в стандартную библиотеку Python, и управлять ими. Чтобы убедиться, что у вас есть pip, который можно использовать для установки пакетов и управления ими, введите pip --version .

Установка Visual Studio Code

При использовании VS Code в качестве текстового редактора или интегрированной среды разработки (IDE) вам доступны IntelliSense (помощь в завершении кода), анализ кода (помогает избежать ошибок в коде), поддержка отладки (помогает находить ошибки в коде после запуска), фрагменты кода (шаблоны для небольших повторно используемых блоков кода) и модульное тестирование (тестирование интерфейса кода с различными типами входных данных).

VS Code также содержит встроенный терминал, который позволяет открывать командную строку Python с помощью командной строки Windows, PowerShell или любой другой, создавая простой рабочий процесс между редактором кода и командной строкой.

Установив VS Code, необходимо также установить расширение Python. Для установки расширения Python можно выбрать ссылку на VS Code в Marketplace или открыть VS Code и выполнить поиск по фразе Python в меню расширений (Ctrl+Shift+X).

Python — интерпретируемый язык, и для выполнения кода Python необходимо указать VS Code, какой интерпретатор нужно использовать. Мы рекомендуем использовать самую последнюю версию Python, если у вас нет особой причины для обратного. После установки расширения Python выберите интерпретатор Python 3, открыв палитру команд (CTRL+SHIFT+P), и начните вводить команду Python: Select Interpreter (Python: выбор интерпретатора) для поиска, а затем выберите появившуюся команду. Вы также можете использовать параметр Select Python Environment (Выбрать среду Python) в нижней строке состояния, если она доступна (возможно, уже отображается выбранный интерпретатор). Команда предоставляет список доступных интерпретаторов, которые VS Code может найти автоматически, включая виртуальные среды. Если нужный интерпретатор не отображается, перейдите к статье о настройке сред Python.

Чтобы открыть терминал в VS Code, выберите Просмотр Терминал или используйте клавиши CTRL+` (символ обратного апострофа). Терминалом по умолчанию является PowerShell.

В окне терминала VS Code откройте Python, просто введя команду: python

Попробуйте использовать интерпретатор Python, введя: print("Hello World") . Python вернет фразу "Hello World".

Python command line in VS Code

Установка Git (необязательно)

Если вы планируете совместно работать над кодом Python с другими пользователями или размещать проект на сайте с открытым исходным кодом (например, GitHub), примите во внимание, что VS Code поддерживает управление версиями с помощью Git. Вкладка системы управления версиями в VS Code отслеживает все изменения и содержит общие команды Git (добавление, фиксация, принудительная отправка, извлечение) прямо в пользовательском интерфейсе. Сначала необходимо установить Git для включения панели управления версиями.

Скачайте и установите Git для Windows с веб-сайта git-scm.

В комплект входит мастер установки, который задает вам ряд вопросов о параметрах установки Git. Рекомендуется использовать все параметры по умолчанию, если у вас нет конкретной причины изменить какой-либо из них.

Если вы никогда не использовали Git, обратитесь к руководствам по GitHub. Они помогут вам приступить к работе.

Учебник по некоторым основам работы с Python (на примере Hello World)

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

Python — интерпретируемый язык. В отличие от скомпилированных языков, в которых написанный код необходимо перевести в машинный код для выполнения процессором компьютера, код Python передается непосредственно интерпретатору и запускается напрямую. Просто введите код и запустите его. Попробуем сделать это!

Откройте командную строку PowerShell и введите python , чтобы запустить интерпретатор Python 3. (В некоторых инструкциях указано использовать команду py или python3 , которые также подойдут.) Если вы делаете все правильно,появится командная строка с тремя символами "больше, чем" >>>.

Существует несколько встроенных методов, позволяющих вносить изменения в строки в Python. Создайте переменную с помощью команды variable = 'Hello World!' . Нажмите клавишу ВВОД для создания новой строки.

Выведите переменную с помощью команды print(variable) . Отобразится текст "Hello World!".

Выясните, сколько символов используется для переменной строки, с помощью команды len(variable) . Будет показано, что используется 12 символов. (Обратите внимание, что пробел учитывается как символ в общей длине.)

Преобразуйте строковую переменную в буквы верхнего регистра: variable.upper() . Теперь преобразуйте строковую переменную в буквы нижнего регистра: variable.lower() .

Подсчитайте, сколько раз буква "l" используется в строковой переменной: variable.count("l") .

Найдите определенный символ в вашей строковой переменной. Давайте найдем восклицательный знак с помощью команды variable.find("!") . Будет показано, что восклицательный знак находится в позиции 11 строки.

Замените восклицательный знак на вопросительный знак: variable.replace("!", "?") .

Чтобы выйти из Python, введите exit() , quit() или нажмите клавиши CTRL+Z.

PowerShell screenshot of this tutorial

Надеемся, вам понравилось использовать некоторые из встроенных в Python методов модификации строк. Теперь попробуйте создать файл программы Python и запустить его с помощью VS Code.

Учебник по использованию Python с VS Code (на примере Hello World)

Команда VS Code составила отличный учебник по началу работы с Python с пошаговым руководством по созданию программы Hello World с помощью Python, запуску программного файла, настройке и запуску отладчика, а также установке пакетов, таких как matplotlib и numpy, для создания графического изображения в виртуальной среде.

Откройте PowerShell и создайте пустую папку с именем hello, перейдите в эту папку и откройте ее в VS Code:

После открытия среды VS Code, где показана новая папка hello в левом окне обозревателя, откройте окно командной строки в нижней панели VS Code, нажав CTRL+` (символ обратного апострофа) или выбрав Просмотр Терминал. После запуска VS Code в папке эта папка станет вашей рабочей областью. VS Code хранит параметры, относящиеся к этой рабочей области, в файле .vscode/settings.json. Они отделены от параметров пользователя, которые хранятся глобально.

Продолжайте работу с учебником в документации для VS Code: Сведения о создании файла исходного кода для Hello World на Python.

Создание простой игры с помощью Pygame

Pygame running a sample game

Pygame — это популярный пакет Python для создания игр, который позволяет учащимся изучать программирование увлекательным способом. Pygame отображает графические изображения в новом окне, поэтому метод "только командной строки" WSL не подойдет. Но если вы установили Python с помощью Microsoft Store, как описано в этом учебнике, все получится.

После установки Python установите Pygame из командной строки (или терминала в VS Code), введя python -m pip install -U pygame --user .

Протестируйте установку, запустив пример игры: python -m pygame.examples.aliens

Если все в порядке, откроется окно игры. По завершении игры закройте окно.

Вот как начать написание кода собственной игры:

Откройте PowerShell (или командную строку Windows) и создайте пустую папку с именем bounce. Перейдите к этой папке и создайте файл с именем bounce.py. Откройте папку в VS Code:

С помощью VS Code введите следующий код Python (или скопируйте и вставьте его):

Сохраните его как: bounce.py .

Запустите его в терминале PowerShell, введя: python bounce.py .

Pygame running the next big thing

Попробуйте изменить некоторые из чисел, чтобы увидеть, как они влияют на прыгающий шарик.

Материалы для непрерывного обучения

Мы рекомендуем использовать следующие ресурсы, чтобы продолжить изучение разработки на Python в Windows.

Онлайн-курсы для изучения Python

Введение в Python на Microsoft Learn. Попробуйте интерактивную платформу Microsoft Learn и получите навыки выполнения этого модуля, охватывающего основы написания базового кода Python, объявления переменных и работы с входными и выходными данными консоли. Интерактивная среда песочницы предоставляет эту отличную возможность начать пользователям, у которых еще не настроена среда разработки Python.

Python на Pluralsight: 8 курсов, 29 часов. Схема обучения Python на Pluralsight предлагает онлайн-курсы, охватывающие различные темы, связанные с Python, включая средство для измерения навыков и поиска пробелов в знаниях.

Работа с Python в VS Code

Редактирование Python в VS Code. Узнайте больше о том, как воспользоваться преимуществами автозаполнения VS Code и поддержкой IntelliSense для Python, включая их настройку или отключение.

Анализ кода Python. Анализ кода — это процесс запуска программы, которая будет анализировать код на наличие возможных ошибок. Узнайте о различных формах поддержки анализа кода VS Code для Python и о том, как выполнить его настройку.

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

Модульное тестирование Python. В статье по этой ссылке содержатся некоторые основные сведения о модульном тестировании, включении платформы тестирования, создании и выполнении тестов, отладке тестов и параметрах конфигурации теста, а также приведено пошаговое руководство с примером.

Интерпретатор позволяет получать моментальный отклик на выполненные действия. Можно сказать, что интерпретатор работает как CLI (Command Line Interface) сетевых устройств: каждая команда будет выполняться сразу же после нажатия Enter. Однако есть исключение – более сложные объекты (например циклы или функции) выполняются только после двухкратного нажатия Enter.

В предыдущем разделе, для проверки установки Python вызывался стандартный интерпретатор. Кроме него, есть и усовершенствованный интерпретатор IPython. IPython позволяет намного больше, чем стандартный интерпретатор, который вызывается по команде python. Несколько примеров (возможности IPython намного шире):

Установить IPython можно с помощью pip (установка будет производиться в виртуальном окружении, если оно настроено):

После этого, перейти в IPython можно следующим образом:

Для выхода используется команда quit. Далее описывается, как будет использоваться IPython.

Для знакомства с интерпретатором можно попробовать использовать его как калькулятор:

В IPython ввод и вывод помечены:

  • In – входные данные пользователя
  • Out – результат, который возвращает команда (если он есть)
  • числа после In или Out – это порядковые номера выполненных команд в текущей сессии IPython

Пример вывода строки функцией print():

Когда в интерпретаторе создаётся, например, цикл, то внутри цикла приглашение меняется на многоточие. Для выполнения цикла и выхода из этого подрежима необходимо дважды нажать Enter:

В IPython есть возможность посмотреть справку по произвольному объекту, функции или методу с помощью help():

print()¶

Функция print() позволяет вывести информацию на стандартный поток вывода (текущий экран терминала). Если необходимо вывести строку, то её нужно обязательно заключить в кавычки (двойные или одинарные). Если же нужно вывести, например, результат вычисления или просто число, то кавычки не нужны:

Если нужно вывести подряд несколько значений через пробел, то нужно перечислить их через запятую:

По умолчанию в конце каждого выражения, переданного в print(), будет перевод строки. Если необходимо, чтобы после вывода каждого выражения не было бы перевода строки, надо в качестве последнего выражения в print() указать дополнительный аргумент end.

Дополнительные параметры функции print Функция print

Функция dir() может использоваться для того, чтобы посмотреть, какие имеются атрибуты (переменные, привязанные к объекту) и методы (функции, привязанные к объекту).

Например, для числа вывод будет таким (обратите внимание на различные методы, которые позволяют делать арифметические операции):

Аналогично для строки:

Если выполнить dir() без передачи значения, то она показывает существующие методы, атрибуты и переменные, определённые в текущей сессии интерпретатора:


Основы

Интерпретатор Питона работает следующим образом:

— сперва исходный код, который написан программистом и хранится в файлах с расширением .py, преобразуется в байт-код (файлы с расширением .pyc). Байт-код – это промежуточный слой между человеко-читаемым кодом и кодом на языке процессора.

— затем байт-код исполняется виртуальной машиной.

Как Вы видите, процесс разбит на два шага. Это сделано с единственной целью – ускорение. Так работает стандартная реализация – CPython, но есть и другие.

CPython

Эта реализация интерпретатора – эталон, поскольку именно она поставляется в составе языка с официального сайта Пайтона. Как можно догадаться по названию, написан он на языке C, а разработан при поддержке Python Software Foundation.

Отличительной чертой CPython можно назвать глобальную блокировку интерпретатора (GIL). Это архитектурное решение вызвало огромное количество споров. Суть заключается в следующем: эта блокировка не позволяет выполнять потоки параллельно. Это избавляет разработчика от многих головных болей, таких как синхронизация, совместное использование памяти и тому подобное. С другой стороны, из-за GIL, параллельное программирование доступно только при использовании отдельных процессов, что ощутимо медленнее параллельных потоков. Главным сторонником глобальной блокировки является сам создатель языка – Гвидо ван Россум.

В основном из претензий к GIL, динамической типизации и скорости самого Пайтона, и родились другие варианты интерпретатора.

Jython

Суть этого интерпретатора в том, что он компилирует исходный код не в байт-код виртуальной машины Python (PVM), а в байт-код виртуальной машины Java (JVM). Благодаря этому в коде на Питоне можно использовать классы Java. Главное же преимущество – JVM работает быстрее, особенно после последних крупных оптимизаций и, в некоторых тестах, показывает скорость выше C++.

IronPython

ActivePython

Это ещё одна реализация, нацеленная, в основном, на пользователей операционной системы Виндовс. По сути, это стандартный CPython, к которому добавили инструменты комфортного взаимодействия с ОС и различную документацию и мануалы.

WinPython

Хотя нынешние версии CPython очень стабильны в операционной системе Windows, WinPython имеет несколько эксклюзивных функций. Поскольку WinPython является автономным дистрибутивом для Python, вам нужно только загрузить и распаковать его, чтобы начать работу. WinPython также поставляется с некоторыми из самых популярных библиотек Python для науки о данных и машинного обучения, таких как NumPy, Pandas и SciPy. Следовательно, вы можете сразу же работать с этими библиотеками Python.

WinPython поставляется с множеством встроенных функций, которые в большинстве случаев не требуются, например, компилятор C и C ++. Это может быть серьезным ограничением, поскольку нет возможности выбрать и загрузить только те функции, которые необходимы.

Nuitka

Nuitka — это не только компилятор (может создавать исполняемые файлы), но и транспайлер. Что такое транспиляция? Транспиляция — преобразование программы, при котором используется исходный код программы, написанной на одном языке программирования в качестве исходных данных, и производится эквивалентный исходный код на другом языке программирования. В данном случае этот язык – C или С++.

Nuitka полностью написана на Python.

PyJS

Компилятор PyJS переводит код Python в эквивалентный код JavaScript, чтобы он мог выполняться внутри веб-браузера. Используется для этого абстрактное синтаксическое дерево самого Python.

Stackless Python

Stackless Python — это усовершенствованная версия интерпретатора Python. Он назван так из-за отказа от использования стандартного стека вызовов языка C в пользу собственного стека.

Cython

Cython — это не просто компилятор для Python; это языковое надмножество языка Python, который поддерживает взаимодействие с C/C ++. CPython написан на C, поэтому это язык, который обычно хорошо сочетается с Python. По своей сути, это промежуточный слой между Python и C/C++. Cython позволяет писать обычный Python-код с некоторыми незначительными модификациями, который затем напрямую транслируется в C-код. Но стоит помнить, что Вам придётся самостоятельно указать типы всех переменных – прощай динамическая типизация.

PyPy

PyPy написан на Python и не требует изменений в коде. Это быстрая и эффективная альтернатива CPython. Запустив свою программу с его помощью, вы можете получить увеличение скорости до ста раз, не внося ни одного изменения в код. Однако, существует и ряд ограничений:

— может некорректно работать с подключенными к коду на Питоне библиотеками на Си

— перед запуском производит множество манипуляций над кодом, в целях оптимизации. Это делает бессмысленным его использование в небольших скриптах.

Pythran

Pythran предназначен для эффективной компиляции научных программ с использованием нескольких ядер и SIMD-инструкций.

Pyston

Skulpt

Skulpt — это реализация Python в браузере, нет необходимости в дополнительной обработке, плагинах или поддержке на стороне сервера, необходимых для запуска Python в веб-браузере. Любой код Python, написанный в Skulpt, выполняется непосредственно в веб-браузере. Хотя Skulpt переводит код Python в код JS, он не облегчает выполнение последнего.

Transcrypt

Компилятор Python следует упрощенному и мощному синтаксису, не требуя дополнительных расширений. Transcrypt прекомпилирует в быстрый, читаемый JS-код, который можно отлаживать из исходного кода Python. Помимо беспрепятственного доступа к любой JS-библиотеке, Transcrypt также может работать поверх Node.js.

Благодаря поддержке иерархических модулей, локальных классов и множественного наследования Transcrypt может похвастаться гибкой и стабильной общей структурой.

Заключение

Несмотря на всё многообразие интерпретаторов, компиляторов и трансляторов Python, стоит помнить, что самой стабильной и актуальной, хоть и медленной, будет стандартная реализация интерпретатора – CPython. Так же это лучший выбор для новичков, которым надо узнать только язык, а не нюансы его реализации. Если Вам нужно выполнять Питон в браузере, стоит рассмотреть трансляторы в JavaScript. Так же решением может быть относительно молодая, но очень перспективная технология, выходящая за рамки данного урока, — Web Assembly. Ну а за дополнительной скоростью, скорее всего, стоит обратиться к PyPy.

python_3

Всем еще раз привет, сейчас расскажу о том, как работает Python, что такое интерпретатор, как работает компилятор и что такое байт-код, далее расскажу о виртуальной машине (PVM) и о производительности Python. Также о альтернативных реализациях интерпретатора.

После того, как вы установили себе Python, перейдем к теоретически-практической части и начнем с того что из себя представляет интерпретатор.

Интерпретатор

Интерпретатор - это такая программа, которая выполняет другие программы. Когда вы пишете программу на языке Python, интерпретатор читает вашу программу и выполняет содержащиеся в ней инструкции. В действительности, интерпретатор - это слой программной логики между вашим программным кодом и аппаратурой вашего компьютера.

В зависимости от используемой версии Python сам интерпретатор может быть реализован как программа на языке C, как набор классов Java и в каком-либо другом виде, но об этом позже.

Запуск сценария в консоли

Давайте запустите в консоле интерпретатор:

Теперь он ожидает ввода комманд, введите туда следующую инструкцию:

ура, наша первая программа! :D

Запуск сценария из файла

Создайте файл "test.py", с содержимым:

и выполните этот файл:

Вы увидите в консоли результат, поехали дальше!

Динамическая компиляция и байт-код

После того, как запустите сценарий, Python сначала компилирует исходный текст сценария в байт-код для виртуальной машины. Компиляция - это просто этап перевода, а байт-код это низкоуровневое платформонезависимое представление исходного текста программы. Python транслирует каждую инструкцию в исходном коде сценария в группы инструкций байт-кода для повышения скорости выполнения программы, так как байт-код выполняется намного быстрее. После компиляции в байт-код, создается файл с расширением ".pyc" по соседству с исходным текстом сценария.

В следующий раз, когда вы запустите свою программу интерпретатор минует этап компиляции и отдаст на выполнение откомпилированный файл с расширением ".pyc". Однако, если вы изменили исходные тексты вашей программы, то снова произойдет этап компиляции в байт-код, так как Python автоматически следит за датой изменения файла с исходным кодом.

Если Python окажется не в состоянии записать файл с байт-кодом, например из-за отсутствия прав на запись на диск, то программа не пострадает, просто байт-код будет собран в памяти и при завершении программы оттуда удален.

Виртуальная машина Python (PVM)

После того как пройдет процесс компиляции, байт-код передается механизму под названием виртуальная машина, которая и выполнит инструкции из байт-кода. Виртуальная машина - это механизм времени выполнения, она всегда присутствует в составе системы Python и это крайняя составляющая системы под названием "Интерпретатор Python".

python

Для закрепления пройденного еще раз проясним ситуацию, компиляция в байт-код производится автоматически, а PVM - это всего лишь часть системы Python, которую вы установили вместе с интерпретатором и компилятором. Все происходит прозрачно для программиста, и вам не надо выполнять эти операции вручную.

Производительность

Программисты имеющие опыт работы с такими языками как C и C++, могут заметить некоторые отличия в модели выполнения Python. Первое - это отсутствие этапа сборки или вызова утилиты "make", программы на Python могут быть сразу же запущены после написания исходного кода. Второе отличие - байт-код не является двоичным машинным кодом (например инструкции для микропроцессора Intel), он является внутренним представлением программы на языке Python.

По этим причинам программы на Python не могут выполняться также быстро как на C/C++. Обход инструкций выполняет виртуальная система, а не микропроцессор, и чтобы выполнить байт-код, необходима дополнительная интерпретация, инструкции которой требуют большего времени, чем машинные инструкции микропроцессора.

Однако, с другой стороны, в отличии от традиционных интерпретаторов, например как в PHP, здесь присутствует дополнительный этап компиляции - интерпретатору не требуется каждый раз анализировать исходный текст программы.

В итоге, Python по производительности находится между традиционными компилирующими и традиционными интерпретирующими языками программирования.

Альтернативные реализации Python

То что было сказано выше о компиляторе и виртуальной машине, характерно для стандартной реализации Python, так называемой CPython (реализации на ANSI C). Однако также существует альтернативные реализации, такие как Jython и IronPython, о которых пойдет сейчас речь.

CPython

Это стандартная и оригинальная реализация Python, названа так, потому что написана на ANSI C. Именно ее мы установили, когда выбрали пакет ActivePython или установили из FreeBSD портов. Поскольку это эталонная реализация, она как правило работает быстрее, устойчивее и лучше, чем альтернативные реализации.

Jython

Первоначальное название JPython, основная цель - тесная интеграция с языком программирования Java. Реализация Jython состоит из Java-классов, которые выполняют компиляцию программного кода на языке Python в байт-код Java и затем передают полученный байт-код виртуальной машине Java (JVM).

Цель Jython состоит в том, чтобы позволить программам на языке Python управлять Java-приложениями, точно также как CPython может управлять компонентами на языках C/C++. Эта реализация имеет беcшовную интеграцию с Java. Поскольку программный код на Python транслируется в байт-код Java, во время выполнения он ведет себя точно также, как настоящая программа на языке Java. Программы на Jython могут выступать в качестве апплетов и сервлетов, создавать графический интерфейс с использованием механизмов Java и т.д. Более того, Jython обеспечивает поддержку возможности импортировать и использовать Java-классы в программном коде Python.

Тем не менее, поскольку реализация Jython обеспечивает более низкую скорость выполнения и менее устойчива по сравнению с CPython, она представляет интерес скорее для разработчиков программ на языке Java, которым необходим язык сценариев в качестве интерфейса к Java-коду.

IronPython

Средства оптимизации скорости выполнения

Существуют и другие реализации, включая динамический компилятор Psyco и транслятор Shedskin C++, которые пытаются оптимизировать основную модель выполнения.

Динамический компилятор Psyco

Система Psyco - это компонент, расширяющий модель выполнения байт-кода, что позволяет программам выполняться быстрее. Psyco является расширением PVM, которое собирает и использует информацию о типах, чтобы транслировать части байт-кода программы в истинный двоичный машинный код, который выполняется гораздо быстрее. Для такой трансляции не требуется вносить изменения в исходный код или производить дополнительную компиляцию в ходе разработки.

Во время выполнения программы, Psyco собирает информацию о типах объектов, и затем эта информация используется для генерации высокоэффективного машинного кода, оптимизированного для объектов этого типа. После этого произведенный машинный код заменяет соответствующие участки байт-кода, тем самым увеличивается скорость выполнения.

В идеале некоторые участки программного кода под управление Psyco могут выполняться также быстро, как скомпилированный код на языке Си.

Psyco обеспечивает увеличение скорости от 2 до 100 раз, но обычно в 4 раза, при использовании немодифицированного интерпретатора Python. Единственный минус у Psyco, это то обстоятельство, что в настоящее время он способен генерировать машинный код только для архитектуры Intel x86.

Psyco не идет в стандартной поставке, его надо скачать и установить отдельно. Еще есть проект PyPy, который представляет собой попытку переписать PVM с целью оптимизации кода как в Psyco, проект PyPy собирается поглотить в большей мере проект Psyco.

Транслятор Shedskin C++

Shedskin - это система, которая преобразует исходный код на языке Python в исходный код на языке C++, который затем может быть скомпилирован в машинный код. Кроме того, система реализует платформонезависемый подход к выполнению программного кода Python.

Фиксированные двоичные файлы (frozen binaries)

Иногда необходимо из своих программ на Python создавать самостоятельные исполняемые файлы. Это необходимо скорее для упаковки и распространения программ.

Фиксированные двоичные файлы объединяют в единый файл пакета байт-код программ, PVM и файлы поддержки, необходимые программам. В результате получается единственный исполняемый файл, например файл с расширение ".exe" для Windows.

На сегодняшний день существует три основных инструмента создания "frozen binaries":

  • py2exe - он может создавать автономные программы для Windows, использующие библиотеки Tkinter, PMW, wxPython и PyGTK для создания графического интерфейса, программы использующие программные средства создания игр PyGame, клиентские программы win32com и многие другие;
  • PyInstaller - напоминает py2exe, но также работает в Linux и UNIX и способен производить самоустанавливающиеся исполняемые файлы;
  • freeze - оригинальная версия.

Вам надо загружать эти инструменты отдельно от Python, они распространяются бесплатно.

Фиксированные двоичные файлы имеют немалый размер, ибо они содержат в себе PVM, но по современным меркам из все же нельзя назвать необычно большими. Так как интерпретатор Python встроен непосредственно в фиксированные двоичные файлы, его установка не является обязательным требованием для запуска программ на принимающей стороне.

Резюме

На сегодня всё, в следующей статье расскажу о стандартных типах данные в Python, ну и в последующих статьях рассмотрим каждый тип в отдельности, а также функции и операторы для работы с этими типами.

Комментарии

создал файл, запустил его через пайтон, но пишет, что ошибка кодировки (файл сохранен в UTF-8) :(
SyntaxError: Non-ASCII character '\xd0'

Читайте также: