Главная страница
Навигация по странице:

  • Рис. 3.2.

  • 3.2. Пример использования REPL

  • Рис. 3.4.

  • Рис. 4.1.

  • 4.1. Запуск программ из IDLE

  • Рис. 4.2.

  • 4.2. Усовершенствования для UNIX

  • Как устроен Python. Как устроен Python. Харрисон. Харрисон Мэтт


    Скачать 5.41 Mb.
    НазваниеХаррисон Мэтт
    АнкорКак устроен Python
    Дата05.02.2022
    Размер5.41 Mb.
    Формат файлаpdf
    Имя файлаКак устроен Python. Харрисон.pdf
    ТипДокументы
    #352210
    страница3 из 21
    1   2   3   4   5   6   7   8   9   ...   21
    19
    2.2. Какой редактор?
    Кроме установки Python вам понадобится текстовый редактор. В нем вы будете писать код. Настоящий мастер не жалеет времени на то, чтобы как следует изучить свои инструменты, и это время не пропадет даром.
    Умение пользоваться всеми возможностями текстового редактора упро- стит вашу работу. Во многих современных редакторах предусмотрена некоторая степень поддержки Python.
    Если же вы только делаете первые шаги в изучении Python и у вас еще нет особого опыта в работе с текстовыми редакторами, в большинство установок Python включается среда разработки IDLE, которая работает в Windows, Mac и Linux.
    При выборе редактора следует обратить внимание на интеграцию со средой Python REPL
    1
    . Вскоре мы рассмотрим пример для IDLE. Же- лательно, чтобы выбранный вами редактор обладал сходной функцио- нальностью.
    Среди популярных редакторов с достойной поддержкой Python можно выделить Emacs, Vim, Atom, Visual Studio Code и Sublime Text. Если вас интересуют более мощные редакторы со встроенной поддержкой рефак- торинга и автозавершения, обратите внимание на популярные PyCharm и Wing IDE.
    2.3. Итоги
    Python 3 — актуальная версия языка Python. Если только вы не работаете над унаследованным кодом, вам стоит отдать предпочтение именно этой версии. Новейшую версию можно загрузить на сайте Python.
    Во многих современных редакторах реализована некоторая степень под- держки Python. Разные редакторы и среды разработки предоставляют разную функциональность. Если вы только начинаете осваивать про- граммирование, опробуйте редактор IDLE. На первых порах это именно то, что нужно.
    1
    REPL — сокращение от Read, Evaluate, Print Loop (цикл «чтение-вычисление-вывод»).
    Вскоре мы рассмотрим пример использования REPL.

    20
    Глава 2. Какая версия Python?
    2.4. Упражнения
    1. Установите Python 3 на своем компьютере. Убедитесь в том, что
    Python успешно запускается.
    2. Если вы привыкли работать в конкретном редакторе, узнайте, ре- ализована ли в нем поддержка Python. В частности, умеет ли он:
    • автоматически выделять элементы синтаксиса Python;
    • выполнять код Python в REPL;
    • осуществлять пошаговое выполнение кода Python в отладчике.

    3
    Интерпретатор
    Python традиционно относится к семейству интерпретируемых языков
    (другой термин для описания интерпретируемого языка — язык сценари-
    ев). Чтобы программа могла выполняться на компьютерном процессоре, она должна существовать в формате, понятном для этого процессора — а именно в машинном коде. Интерпретируемые языки не компилируются в машинный код напрямую; вместо этого в системе существует промежу- точная прослойка — интерпретатор, — которая выполняет эту функцию.
    У такого подхода есть как достоинства, так и недостатки. Как нетрудно понять, трансляция «на ходу» может занимать много времени. Интер- претируемый код — такой, как программы Python, — может работать в 10–100 раз медленнее программ на языке C. С другой стороны, напи- сание кода на Python оптимизирует время разработки. Программы на языке Python нередко получаются в 2–10 раз короче своих аналогов на языке C. Кроме того, этап компиляции может занимать довольно много времени и отвлекать программиста между разработкой и отладкой.
    Многие разработчики и компании охотно идут на этот компромисс. Не- большие программы (то есть содержащие меньше строк кода) быстрее пишутся и создают меньше проблем с отладкой. Труд программистов обходится дорого — если удастся переложить часть работы на оборудо- вание, это может обойтись дешевле, чем привлечение дополнительных специалистов. Отладить 10 строк кода проще, чем отладить 100 строк кода.
    Исследования показали, что количество ошибок в коде пропорционально количеству строк. Следовательно, если язык позволяет написать меньше строк кода для решения некоторой задачи, то, скорее всего, программа

    22
    Глава 3. Интерпретатор будет содержать меньше ошибок. Иногда скорость выполнения программы не столь важна, и во многих практических случаях Python работает доста- точно быстро. Кроме того, были предприняты проекты, направленные на ускорение работы интерпретатора Python, например PyPy
    1
    Программа
    Компилируемый язык
    Компилятор
    Двоичный файл
    Интерпретируемый язык
    Интерпретатор
    Двоичный файл выполняется на компьютере
    Интерпретатор выполняется на компьютере и выполняет команды, из которых состоит программа hello.c gcc hello hello.py python
    Программа
    Рис. 3.1. Различия между компилируемым и интерпретируемым языком.
    Компилятор обрабатывает программный код и создает исполняемый файл.
    Интерпретатор создает исполняемый файл, который загружает программный код и управляет его выполнением
    3.1. REPL
    Для Python также существует интерактивный интерпретатор, который называется REPL (Read Evaluate Print Loop — цикл «чтение-вычисление- вывод»). REPL в цикле ожидает, пока появятся входные данные, читает
    1
    https://www.pypy.org

    3.1. REPL
    23
    и обрабатывает (интерпретирует) их, после чего выводит результат.
    Запуская исполняемый файл python3
    , вы запускаетe интерактивный интерпретатор Python. Другие среды, например IDLE, также содержат встроенный интерактивный интерпретатор.
    ПРИМЕЧАНИЕ
    В этой книге Python 3 обычно запускается командой python3
    . В системе
    Windows исполняемому файлу присвоено имя python
    . Если вы работаете в Windows, замените имя python3
    именем python
    . В системе UNIX менять ничего не нужно.
    При запуске интерпретатор выводит версию Python, информацию о сбор- ке и несколько подсказок по использованию. Наконец, интерпретатор выдает приглашение
    >>>
    Рис. 3.2. Чтобы запустить REPL, введите в приглашении командной строки команду python3. Команда открывает сеанс Python
    Рис. 3.3. Чтобы запустить REPL из IDE, щелкните на значке IDLE или введите команду python3 -m idlelib.idle

    24
    Глава 3. Интерпретатор
    IDLE (редактор, включенный в поставку Python) также можно запустить командой python3
    -m idlelib.idle
    ПРИМЕЧАНИЕ
    Некоторые дистрибутивы Linux включают не все библиотеки из стандартной библиотеки Python. Это неприятно, но на то есть своя причина: на сервере не нужны библиотеки для создания клиентских приложений. По этой при- чине Ubuntu и Arch (среди прочих) в установке по умолчанию не включают библиотеки графического интерфейса, необходимые для IDLE.
    Если вы увидите ошибку, которая выглядит примерно так:
    $ python3 -m idlelib.idle
    ** IDLE can't import Tkinter.
    Your Python may not be configured for Tk. **
    это означает, что в системе отсутствует библиотека tkinter.
    В Ubuntu следует выполнить команду:
    $ sudo apt-get install tk-dev
    В Arch эта команда выглядит так:
    $ sudo pacman -S tk
    3.2. Пример использования REPL
    Следующий пример показывает, почему интерактивный интерпретатор
    REPL получил свое название. Введите команду python3
    в командной строке
    1
    или запустите IDLE; вы увидите приглашение
    >>>
    Введите 2 + 2, как показано ниже, и нажмите клавишу
    Enter
    :
    $ python3
    >>> 2 + 2 4
    >>>
    1
    Чтобы вызвать приглашение командной строки, в меню Пуск системы Windows вве- дите cmd
    (или нажмите клавиши
    Win+R
    ). Чтобы быстро вызвать окно терминала на компьютере Mac, нажмите
    Command+Space
    , введите
    Terminal и нажмите
    Return
    . Если вы установили Python 3, то теперь сможете запустить его на любой платформе командой python3

    3.2. Пример использования REPL
    25
    В этом примере мы ввели команду python3
    , которая запустила интер- претатор. Первое приглашение
    >>>
    можно рассматривать как первую часть названия (R — чтение): Python ожидает входных данных. Мы ввели
    2
    +
    2
    , интерпретатор прочитал и обработал (E — обработка) их.
    Далее выводится (P — вывод) результат этого выражения — 4. Второе приглашение
    >>>
    относится к циклу (L — цикл): интерпретатор ожидает новых входных данных.
    REPL по умолчанию направляет результат выражения в стандартный вывод (если результат отличен от
    None
    , но об этом позднее). Такое по- ведение отличается от обычных программ Python, в которых для вывода данных необходимо вызвать функцию print
    . В REPL это экономит не- сколько нажатий клавиш.
    ПРИМЕЧАНИЕ
    Приглашение
    >>>
    используется только в первой строке входных данных.
    Если команда, введенная в REPL, занимает более одной строки, следует приглашение
    :
    >>> sum([1, 2, 3, 4, 5,
    ... 6, 7])
    Эти приглашения определяются в модуле sys
    :
    >>> import sys
    >>> sys.ps1
    '>>> '
    >>> sys.ps2
    '... '
    О том, что такое модули, будет рассказано в одной из следующих глав.
    А пока знайте, что внешний вид приглашений определяется специальными переменными.
    REPL — весьма полезный инструмент. При помощи интерактивного интерпретатора можно писать небольшие функции, тестировать фраг- менты кода и даже выполнять вычисления, как на калькуляторе. А еще интереснее пойти в другом направлении: запустите свой код Python в REPL. Код будет выполнен, а вы сможете проверить его состояние в REPL (скоро мы покажем, как сделать это в IDLE).

    26
    Глава 3. Интерпретатор
    Символы
    >>>
    образуют приглашение. Здесь вы вводите свою программу.
    Введите после
    >>>
    команду print("hello world")
    и нажмите клавишу
    Enter
    Проследите за тем, чтобы перед словом print не было ни пробелов, ни табуляций. Результат должен выглядеть так:
    >>> print("hello world")
    hello world
    Если все получилось именно так — поздравляем, вы написали свою первую программу на Python. Считайте, что отныне официально приоб- щились к миру программирования. Вы только что запустили программу
    «hello world» — классическую программу, которую многие по традиции пишут в начале знакомства с новым языком. Чтобы выйти из REPL в терминале, введите quit()
    . Пользователи UNIX также могут нажать клавиши
    Ctl+D
    Рис. 3.4. IDLE пытается указать, где произошла ошибка. Цветовое выделение после world обозначает место, в котором ошибка была обнаружена
    ПРИМЕЧАНИЕ
    Программирование требует точности. Если при вводе print("hello world")
    пропустить всего один символ, результат может оказаться совсем другим, например, таким:
    >>> print("hello world
    File "", line 1
    print("hello world
    ^
    SyntaxError: EOL while scanning string literal

    3.4. Упражнения
    27
    Компьютер мыслит логично, и если ваши требования ему непонятны, он мо- жет предупредить вас, действовать иррационально (или, по крайней мере, вам так покажется) или вообще зависнуть. Не принимайте это близко к сердцу; помните, что в языках есть правила, и весь код, который вы пишете, должен эти правила соблюдать. В предыдущем примере было нарушено правило, требующее, чтобы весь текст, который вы хотите вывести на экран, начи- нался и заканчивался кавычками. На этот раз Python смутила пропущенная кавычка в конце строки.
    3.3. Итоги
    Так как Python является интерпретируемым языком, программисты мо- гут использовать REPL для интерактивного исследования возможностей
    Python. Вам не нужно писать код, компилировать и запускать его — до- статочно запустить REPL и начать эксперименты с кодом.
    Пользователям, работавшим с компилируемыми языками, такой подход может показаться неожиданным. Не торопитесь с выводами и попро- буйте; он может сделать разработку простой и быстрой. Кроме того, не бойтесь экспериментировать с кодом в REPL. По моему опыту, начи- нающие пользователи Python почему-то обходят REPL стороной. Не бойтесь REPL!
    Также существуют другие разновидности REPL для Python. Один из популярных вариантов — Jupyter
    1
    , REPL на базе веб-технологий. Начав с REPL, вскоре вы сможете перейти к другим, более мощным разновид- ностям.
    3.4. Упражнения
    1. Откройте REPL для Python 3 и выполните программу «hello world». Если вы забыли, как выглядит эта однострочная програм- ма, просмотрите эту главу.
    2. Откройте REPL из IDLE и выполните программу «hello world».
    1
    https://jupyter.org

    4
    Запуск программ
    Хотя интерактивный интерпретатор может принести пользу в ходе раз- работки, вам (и другим разработчикам) неизбежно потребуется запускать программы вне REPL. В Python и это делается просто. Чтобы запустить программу Python с именем hello.py
    , откройте окно терминала, перейдите в каталог с программой и введите команду
    $ python3 hello.py
    ПРИМЕЧАНИЕ
    В этой книге перед командой, при ее выполнении из командной строки, будет ставиться символ
    $
    . По этому символу команды можно отличить от входных данных интерпретатора (
    >>>
    или
    ) и содержимого файлов
    (без префикса).
    ПРИМЕЧАНИЕ
    Скорее всего, попытка выполнения приведенной выше команды python3
    hello.py завершится ошибкой, если в системе нет файла с именем hello.py
    В главе 3 мы использовали REPL для выполнения программы «hello world»; как выполнить ту же программу в автономном режиме? Создайте файл с именем hello.py в своем любимом текстовом редакторе.
    Включите в файл hello.py следующую команду:
    print("hello world")

    4.1. Запуск программ из IDLE
    29
    Сохраните файл, перейдите в каталог с этим файлом и выполните файл
    (в данном случае термины «выполнить» и «запустить» считаются экви- валентными; иначе говоря, введите python3
    перед именем файла, и ин- терпретатор Python обработает код за вас).
    Рис. 4.1. Среда IDLE запущена, и в ней открыто новое окно редактора
    (с именем Untitled, потому что файл еще не был сохранен)
    ПРИМЕЧАНИЕ
    Команда python3
    без параметров запускает интерпретатор. Команда python3
    имя_файла.py выполняет этот файл.
    Если вам удалось запустить файл hello.py
    , команда выведет текст hello world
    4.1. Запуск программ из IDLE
    Программы также можно редактировать и запускать в IDLE. Сначала запустите IDLE: либо щелкните на значке приложения на своем ком- пьютере, либо выполните команду
    $ python3 -m idlelib.idle

    30
    Глава 4. Запуск программ
    При запуске IDLE вы увидите окно оболочки (shell) — еще одной раз- новидности REPL языка Python. Если ввести код, Python немедленно выполнит его. Чтобы создать программу, необходимо создать файл, со- держащий код Python. Для этого откройте меню
    File и выберите команду
    New
    File
    . На экране появляется новое окно — причем это не окно оболочки, а окно редактора. Обратите внимание: окно пустое и в нем нет пригла- шения Python. В этом окне вводится код Python.
    Рис. 4.2. Код, введенный в окне редактора
    Рис. 4.3. Результат выполнения программы «hello world» в IDLE
    Введите код в этом окне. Так как мы рассматриваем пример с программой
    «hello world», введите команду print("hello world")
    Вы заметите, что IDLE выделяет print и «
    hello world
    » разными цветами.
    Это выделение, называемое цветовым выделением синтаксиса, делает код более понятным. Теперь код нужно запустить. Проще всего сделать это нажатием клавиши
    F5
    . Другой вариант — открыть меню
    Run и вы- брать команду
    Run
    Module
    . IDLE предложит сохранить файл. Сохраните его под именем hello.py
    . IDLE передает фокус окну оболочки, выводит строку с сообщением о перезапуске оболочки, а затем выводит сообще- ние hello world

    4.2. Усовершенствования для UNIX
    31
    Результат вроде бы тривиальный, но окно оболочки теперь связано с со- стоянием вашего кода. В данном случае программа только выводит текст на экран, так что особого состояния у нее нет. Но в будущих примерах мы покажем, как воспользоваться механизмом интеграции редактора с оболочкой и создать среду, в которой можно быстро опробовать код, посмотреть результаты и проанализировать вывод программы.
    Если вам понадобится информация о навигации в режиме командной строки, обратитесь к приложению А.
    4.2. Усовершенствования для UNIX
    На платформах UNIX (в частности, к этой категории относятся Linux и OS X) такие файлы, как hello.py
    , часто называются сценариями (scripts).
    Сценарий тоже является программой, этот термин часто использует- ся для того, чтобы отличать интерпретируемый код от машинного.
    В данном случае сценарии являются интерпретируемым кодом, а ре- зультат компиляции такого языка, как C, представляет собой машинный код.
    ПРИМЕЧАНИЕ
    Также часто приходится слышать о «сценариях командной строки», «сце- нариях Perl», «сценариях Python» и т. д. Чем сценарий Python отличается от программы Python? Ничем, дело только в семантике. Сценарием Python обычно называется программа Python, запускаемая из командной строки, тогда как программой Python называется любая программа, написанная на
    Python (от простейших однострочных до эффектных приложений с графи- ческим интерфейсом или служб корпоративного уровня).
    В средах UNIX предусмотрен удобный механизм самостоятельного за- пуска сценариев. Если разместить в первой строке файла символы
    #!
    , за которыми указывается путь к интерпретатору, а для файла установить
    бит исполнения, такой файл можно будет запускать сам по себе, то есть без ручного запуска интерпретатора.
    Чтобы сценарий выполнялся с интерпретатором Python, указанным в переменной среды, файл hello.py должен выглядеть так:

    32
    Глава 4. Запуск программ
    #!/usr/bin/env python3
    print("hello world")
    ПРИМЕЧАНИЕ
    Новая первая строка приказывает командному интерпретатору, который выполняет файл, выполнить остаток файла с исполняемым файлом
    #!/
    usr/bin/env python3
    . (Сценарии командного интерпретатора обычно на- чинаются с
    #!/bin/bash или
    #!/bin/sh
    .) Сохраните файл hello.py с новой первой строкой.
    СОВЕТ
    Запись
    #!/usr/bin/env
    — удобное обозначение первого исполняемого файла python3
    , найденного в переменной среды
    PATH
    . Так как исполняемый файл python3
    хранится в разных местах на разных платформах, такое решение полу- чается кросс-платформенным. В системе Windows эта строка игнорируется.
    Если только у вас нет полной уверенности в том, что вы хотите запустить конкретную версию Python, вероятно, стоит использовать запись
    #!/usr/
    bin/env
    Жестко закодированные пути вида

    #!/bin/python3

    #!/usr/bin/python3.3
    могут нормально работать на вашем компьютере, но если вы передадите свой сценарий другим разработчикам, на машинах которых python3
    не хранится в указанном вами месте, начнутся проблемы. Если для вашего сценария нужна конкретная версия Python, об этом обычно упоминается в файле README.
    Теперь файл необходимо назначить исполняемым. Откройте терминал, перейдите в каталог с файлом hello.py и разрешите исполнение файла следующей командой:
    $ chmod +x hello.py
    Команда устанавливает для файла бит исполнения. В среде UNIX суще- ствуют разные разрешения (устанавливаемые при помощи соответству- ющих битов) для чтения, записи и исполнения файла. Если для файла установлен бит исполнения, то при запуске файла среда UNIX проверяет его первую строку и выполняет файл так, как указано.

    4.3. Итоги
    1   2   3   4   5   6   7   8   9   ...   21


    написать администратору сайта