Математический анализ. 3е издание
Скачать 4.86 Mb.
|
54 Глава 1. Python в вопросах и ответах Это обстоятельство неизбежно добавляет юмора в примеры программ ного кода на языке Python. Например, традиционные имена перемен ных «foo» и «bar» в языке Python превратились в «spam» и «egg». Встречающиеся иногда имена «Brian», «ni» и «shrubbery», точно так же появились благодаря своим тезкам. Это даже оказывает влияние на сообщество в целом: дискуссии на конференциях по языку Python обычно имеют именование «Испанская инквизиция». Все это, конечно, очень забавно, если вы знакомы с сериалом, в про тивном случае это кажется непонятным. Вам не требуется знать сери ал, чтобы понимать примеры, где используются ссылки на Монти Пайтона (включая многие примеры в этой книге), но по крайней мере, вы теперь знаете, откуда что берется. Какими преимуществами обладает Python перед языком X? Наконец, перейдем к области, которая вам уже, возможно, знакома – сравнению Python с другими языками программирования, такими как Perl, Tcl и Java. Ранее мы уже говорили о проблеме производи тельности, поэтому здесь мы сосредоточим свое внимание на функцио нальных возможностях. Другие языки программирования также яв ляются достаточно полезными инструментами, чтобы знать и исполь зовать их, но многие находят, что Python: • Имеет более широкие возможности, чем Tcl. Язык Python поддер живает «программирование в целом», что делает его применимым для разработки крупных систем. • Имеет более четкий синтаксис и более простую архитектуру, чем Perl, что делает программный код более удобочитаемым, простым в сопровождении и снижает вероятность появления ошибок. • Проще и удобнее, чем Java. Python – это язык сценариев, а Java унаследовала сложный синтаксис от таких языков программирова ния, как C++. • Проще и удобнее, чем C++, но нередко он не может конкурировать с C++, поскольку, будучи языком сценариев, Python предназначен для решения другого круга задач. • Более мощный и более переносимый, чем Visual Basic. Открытая природа Python также означает, что нет какойто отдельной компа нии, которая его контролирует. • Более зрелый и имеет более ясный синтаксис, чем Ruby. В отличие от Ruby и Java, объектноориентированный стиль программирова ния является необязательным в Python – он не вынуждает исполь зовать ООП в проектах, где этот стиль неприменим. • Обладает динамическими характеристиками таких языков, как SmallTalk и Lisp, но имеет более простой и традиционный синтак В заключение 55 сис, доступный как для разработчиков, так и для конечных пользо вателей настраиваемых систем. Многие считают, что Python, по сравнению с другими современными языками сценариев, гораздо лучше подходит для программ, которые делают нечто большее, чем простое сканирование текстовых файлов и код которых, возможно, потребуется читать другим людям (и может быть, даже вам!). Кроме того, если от вашего приложения не требуется наивысшая производительность, Python способен составить конкурен цию таким языкам программирования, как C, C++ и Java: программ ный код на языке Python проще писать, отлаживать и сопровождать. Безусловно, автор является горячим поклонником Python с 1992 года, поэтому воспринимайте эти комментарии по своему усмотрению. Одна ко они в действительности отражают опыт многих программистов, кото рые потратили немало времени на исследование возможностей Python. В заключение Этот раздел завершает рекламную часть книги. В этой главе мы рас смотрели некоторые из причин, по которым люди выбирают Python для программирования своих задач. Здесь также было показано, как он используется, и приведены представительные примеры тех, кем он используется в настоящее время. Моя цель состоит в том, чтобы обу чить вас языку Python, а не продать его. Лучший способ создать собст венное мнение о языке – это опробовать его в действии, поэтому ос тальная часть книги целиком и полностью будет сфокусирована на описании языка, который здесь был представлен. Следующие две главы могут рассматриваться как техническое введение в язык. В этих главах мы узнаем, как запускаются программы на языке Python, коротко рассмотрим модель исполнения байткода и получим основные сведения об организации файлов модулей, в которых хранит ся программный код. Цель этих глав состоит в том, чтобы дать вам объ ем информации, достаточный для запуска примеров и выполнения уп ражнений в остальной части книги. Мы фактически не будем касаться вопросов программирования до главы 4, но прежде чем перейти к нему, вы определенно получите все необходимые начальные сведения. Закрепление пройденного Контрольные вопросы Каждая глава в этом издании книги будет завершаться серией корот ких контрольных вопросов, которые помогут вам закрепить в памяти ключевые концепции. Ответы на вопросы следуют ниже, и вы можете прочитать эти ответы сразу, как только столкнетесь с затруднениями. Помимо контрольных вопросов в конце каждой части вы найдете 56 Глава 1. Python в вопросах и ответах упражнения, предназначенные для того, чтобы помочь вам програм мировать на языке Python. Итак, перед вами первый тест. Удачи! 1. Назовите шесть основных причин, по которым программисты вы бирают Python. 2. Назовите четыре известные компании или организации, исполь зующие Python. 3. Почему бы вы не хотели использовать Python в приложениях? 4. Какие задачи можно решать с помощью Python? 5. Какой важный результат можно получить с помощью инструкции import this? 6. Почему слово «spam» так часто используется в примерах программ ного кода на языке Python? 7. Какой ваш любимый цвет? Ответы Как дела? Ниже приводятся ответы, которые подготовил я, хотя на не которые вопросы существует несколько правильных ответов. Напом ню еще раз, даже если вы абсолютно уверены в правильности своих от ветов, я советую прочитать мои ответы хотя бы ради того, чтобы полу чить некоторые дополнительные сведения. Если мои ответы кажутся вам бессмысленными, прочитайте текст главы еще раз. 1. Качество программного обеспечения, скорость разработки, перено симость программ, поддержка библиотек, интеграция компонентов и удовольствие. Из этих шести причин качество и скорость разра ботки являются наиболее существенными при выборе Python. 2. Google, Industrial Light & Magic, Jet Propulsion Labs, ESRI и многие другие. Практически каждая организация, занимающаяся разра боткой программного обеспечения, так или иначе использует Py thon как для решения долговременных, стратегических задач про ектирования, так и для решения краткосрочных тактических за дач, таких как тестирование и системное администрирование. 3. Основным недостатком Python является невысокая производитель ность, программы на языке Python не могут выполняться так же быстро, как программы на полностью компилируемых языках, та ких как C и С++. С другой стороны, для большинства применений он обладает достаточно высокой скоростью выполнения и обычно программный код на языке Python работает со скоростью, близкой к скорости языка C, потому что интерпретатор вызывает встроен ный в него программный код, написанный на языке C. Если ско рость выполнения имеет критическое значение, отдельные части приложения можно реализовать на языке C, в виде расширений. Закрепление пройденного 57 4. Вы можете использовать Python для любых задач, которые можно решить с помощью компьютера – от реализации вебсайта и игро вых программ до управления роботами и космическими кораблями. 5. Инструкция import this активизирует «пасхальное яйцо», скрытое в недрах Python, которое отображает некоторые принципы проек тирования, лежащие в основе языка. Как запустить эту инструк цию, вы узнаете в следующей главе. 6. Слово «spam» взято из известной пародии Монти Пайтона (Monty Python), где герои сериала пытаются заказать блюдо в кафетерии, а их заглушает хор викингов, поющих о консервах (spam). Ах да! Это еще и типичное имя переменной, которое используется в сцена риях на языке Python… 7. Голубой. Нет, желтый! 2 Как Python запускает программы В этой и в следующей главе будут коротко рассмотрены вопросы ис полнения программ – как программы запускаются человеком и как Python выполняет их. В этой главе мы рассмотрим интерпретатор Py thon. После этого в главе 3 будет показано, как вам следует запускать свои программы. Порядок запуска программ в любом случае зависит от типа платфор мы, и какието сведения из этой главы могут оказаться неприменимы к платформе, используемой вами, поэтому вы можете просто пропус кать разделы, которые не относятся к вам. Точно так же опытные пользователи, которым уже приходилось использовать подобные ин струменты в прошлом и которые стремятся побыстрее добраться до са мого языка, могут пропустить эти главы, оставив их «для ознакомле ния в будущем». А со всеми остальными мы попробуем разобраться, как запускать некоторый программный код. Введение в интерпретатор Python До сих пор я говорил о Python в основном как о языке программирова ния. Но в текущей реализации это еще и пакет программного обеспе чения, который называется интерпретатор. Интерпретатор – это та кая программа, которая выполняет другие программы. Когда вы пи шете программу на языке Python, интерпретатор Python читает вашу программу и выполняет составляющие ее инструкции. В действитель ности, интерпретатор – это слой программной логики между вашим программным кодом и аппаратурой вашего компьютера. В процессе установки пакета Python на компьютер создается ряд про граммных компонентов – как минимум, интерпретатор и библиотека поддержки. В зависимости от порядка использования интерпретатор Python может иметь вид исполняемой программы или набора библио Введение в интерпретатор Python 59 тек, связанных с другой программой. В зависимости от используемой версии Python сам интерпретатор может быть реализован как про грамма на языке C, как набор классов Java и в какомлибо другом ви де. Независимо от используемой вами разновидности Python ваш про граммный код на этом языке всегда будет выполняться этим интерпре татором. А чтобы обеспечить такую возможность, вы должны устано вить интерпретатор Python на свой компьютер. Процедура установки Python отличается для разных платформ и под робно описывается в приложении A. В двух словах: • Пользователи Windows должны получить и запустить инсталляци онный исполняемый файл, который произведет установку Python на компьютер. Для этого нужно просто дважды щелкнуть на ин сталляционном файле и отвечать Yes (Да) или Next (Далее) на все во просы. • В Windows Vista вам может потребоваться выполнить дополнитель ные действия с инсталляционным файлом Python 2.5 MSI. За под робной информацией по этому поводу обращайтесь к приложению A. • В Linux или в Mac OS вполне возможно, что Python уже установлен и готов к использованию, поскольку он является стандартным ком понентом этих операционных систем. • В отдельных версиях Linux (и в большинстве версий UNIX) Python обычно устанавливается из файлов RPM или компилируется из ис ходных текстов. • Процедура установки на других платформах зависит от этих плат форм. Например, Python присутствует также в сотовых телефонах, игровых консолях и в проигрывателе iPod, но процедуры установ ки Python на эти устройства слишком отличаются, чтобы описы вать их здесь. Дистрибутив Python можно получить на странице загрузок сайта про екта. Его можно также получить по другим каналам распространения программного обеспечения. Но имейте в виду: прежде чем приступать к установке, вы должны убедиться, что Python не был ранее установ лен на ваш компьютер. Если вы пользуетесь операционной системой Windows, обычно Python можно найти в меню Start (Пуск), как показа но на рис. 2.1 (эти пункты меню будут рассматриваться в следующей главе). В операционных системах Linux и UNIX Python обычно нахо дится в дереве каталогов /usr. Поскольку процедура установки сильно зависит от используемой плат формы, мы здесь прервем рассказ о ней. За дополнительной информа цией о ней обращайтесь к приложению A. В целях этой и следующей главы я буду исходить из предположения, что Python уже установлен и готов к работе. 60 Глава 2. Как Python запускает программы Выполнение программы Что стоит за словами «написать и запустить программу на языке Py thon», зависит от того, как вы смотрите на эту задачу, – как програм мист или как интерпретатор Python. Обе точки зрения определяют свой взгляд на программирование. С точки зрения программиста Программа на языке Python, в самой простой форме, – это обычный текстовый файл, содержащий инструкции Python. Например, следую щий файл, с именем script1.py, – это один из простейших сценариев на языке Python, который только можно придумать, но его официально можно назвать программой на языке Python: print 'hello world' print 2 ** 100 Этот файл содержит две инструкции print, которые просто выводят строку (текст в кавычках) и результат числового выражения (2 в сте пени 100) в выходной поток. Не надо сейчас стараться вникнуть в син Рис. 2.1. Когда Python установлен в Windows, его можно найти в меню Start (Пуск). Набор пунктов меню может немного отличаться, в зависимости от версии, но пункт IDLE запускает среду разработки с графическим интерфейсом, а пункт Python запускает сеанс работы с интерактивной командной оболочкой. Кроме того, здесь же можно увидеть пункты вызова стандартного справочного руководства и запуска механизма документирования Pydoc (пункт Module Docs) Выполнение программы 61 таксис языка – в этой главе нас интересует лишь сам порядок запуска программ. Позднее я расскажу об инструкции print и объясню, почему можно возвести число 2 в степень 100, не опасаясь получить ошибку переполнения. Создать такой файл можно с помощью любого текстового редактора. По общепринятым соглашениям файлы с программами на языке Py thon должны иметь расширение .py – с технической точки зрения это требование должно выполняться только для «импортируемых» фай лов, как будет показано позднее в этой книге, но большинству файлов с программами на языке Python даются имена с расширением .py для единообразия. После того как инструкции будут введены в текстовый файл, можно потребовать от Python выполнить его, то есть просто выполнить все инструкции в файле одну за другой, от начала и до конца. Как будет по казано в следующей главе, вы можете запускать программы, щелкая на их пиктограммах, или другими стандартными способами. Если при выполнении файла все пройдет как надо, вы увидите результаты рабо ты двух инструкций print гдето на экране своего компьютера – обычно это происходит в том же окне, где производился запуск программы: hello world 1267650600228229401496703205376km Например, ниже показано, что происходило, когда я попытался запус тить этот сценарий в командной строке DOS на ноутбуке, где установ лена операционная система Windows (обычно эту программу можно найти в меню Accessories (Стандартные) под названием Command Prompt (Ко мандная строка)), чтобы убедиться, что я не допустил никаких опечаток: D:\temp> python script1.py hello world 1267650600228229401496703205376 Мы только что запустили сценарий, который вывел строку и число. Вероятно, мы не получим награды на конкурсе по программированию за этот сценарий, но его вполне достаточно, чтобы понять основные принципы запуска программ. С точки зрения Python Краткое описание, приведенное в предыдущем разделе, является до вольно стандартным для языков сценариев, и это обычно все, что необ ходимо знать программисту. Вы вводите программный код в тексто вый файл, а затем запускаете этот файл с помощью интерпретатора. Однако, когда вы говорите интерпретатору «вперед», за кулисами мно го чего происходит. Хотя знание внутреннего устройства Python и не требуется для овладения навыками программирования на этом языке, тем не менее понимание того, как производится выполнение про грамм, поможет вам увидеть всю картину в целом. 62 Глава 2. Как Python запускает программы Когда интерпретатор Python получает от вас команду запустить сцена рий, он выполняет несколько промежуточных действий, прежде чем ваш программный код начнет «скрипеть колесами». В частности, сце нарий сначала будет скомпилирован в нечто под названием «байт код», а затем передан некоторому механизму, известному под назва нием «виртуальная машина». Компиляция в байткод Когда вы запускаете программу, практически незаметно для вас Py thon сначала компилирует ваш исходный текст (инструкции в файле) в формат, известный под названием байт+код. Компиляция – это про сто этап перевода программы, а байткод – это низкоуровневое, плат формонезависимое представление исходного текста программы. Py thon транслирует каждую исходную инструкцию в группы инструкций байткода, разбивая ее на отдельные составляющие. Такая трансляция в байткод производится для повышения скорости – байткод выполня ется намного быстрее, чем исходные инструкции в текстовом файле. В предыдущем параграфе вы могли заметить фразу – практически не заметно для вас. Если интерпретатор Python на вашем компьютере об ладает правом записи, он будет сохранять байткод вашей программы в виде файла с расширением .pyc («.pyc» – это компилированный ис ходный файл «.py»). Вы будете обнаруживать эти файлы после запус ка программ по соседству с файлами, содержащими исходные тексты (то есть в том же каталоге). Интерпретатор сохраняет байткод для ускорения запуска программ. В следующий раз, когда вы попробуете запустить свою программу, Py thon загрузит файл .pyc и минует этап компиляции – при условии, что исходный текст программы не изменялся с момента последней компи ляции. Чтобы определить, необходимо ли выполнять перекомпиляцию, Python автоматически сравнит время последнего изменения файла с ис ходным текстом и файла с байткодом. Если исходный текст сохранял ся на диск после компиляции, при следующем его запуске интерпрета тор автоматически выполнит повторную компиляцию программы. Если Python окажется не в состоянии записать файл с байткодом на диск, программа от этого не пострадает, просто байткод будет сгене рирован в памяти и уничтожен по завершении программы. 1 Однако, поскольку файлы .pyc повышают скорость запуска программы, вам может потребоваться иметь возможность сохранять их, особенно для больших программ. Кроме того, файлы с байткодом – это еще один из 1 Строго говоря, байткод сохраняется только для импортируемых файлов, но не для файла самой программы. Об импорте мы поговорим в главе 3 и снова вернемся к нему в части V. Байткод также никогда не сохраняется для инструкций, введенных в интерактивном режиме, который описывает ся в главе 3. |