Выбрать главу

44

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

45

Я решил обратить ваше внимание на это, поскольку считаю, что понимание опасности позволит в будущем избежать ее - если процесс Python обладает правом удаления файлов, передача функции eval строки с программным

кодом__import__(‘ os’ ). system(‘ rm -rf *’ ) в Unix приведет к вызову команды

оболочки, которая удалит все файлы в текущем каталоге и во вложенных в него подкаталогах (в Windows аналогичный эффект можно получить с помощью команды ‘ rmdir /S /Q . ’). Не делайте этого! Чтобы увидеть менее опасное и более полезное применение этой особенности, введите выражение__import__(‘ math’ ). pi в одну из ячеек таблицы - щелчок на кнопке Sum

вычислит значение pi (3.14159). Также безопасно будет передать функции

eval выражение “__import__(‘os’ ). system( ‘ di r’)” в интерактивном сеансе. Все

вышесказанное относится и к встроенной функции exec - функция eval выполняет строки выражений, функция exec - инструкции, а выражения являются инструкциями (но не наоборот). Разумеется, обычный пользователь графического интерфейса едва ли введет подобный программный код случайно, особенно если этот пользователь вы сами, но будьте внимательны!

46

Игра-симулятор пинг-понга, появившаяся в 1972 году и ставшая прародительницей таких известных игр, как Breakout и Arkanoid. - Прим. перев.

47

Самая известная, пожалуй, компания Eve Online по производству игровых программ использует Python для создания сценариев и значительной доли функциональности - не только для серверной, но и для клиентской части. Она использует версию Stackless Python, чтобы обеспечить высокую отзывчивость интерфейса при большом количестве параллельно выполняющихся заданий. Из других известных компаний, использующих Python, можно назвать производителя игры Civilization IV и ныне несуществующую Origin Systems (в последних сообщениях говорилось, что их игра Ultima Online II должна была использовать Python для поддержки анимации).

48

Имеется в виду модель автомобиля «Chevrolet Camaro», пользующаяся славой надежного и неприхотливого автомобиля. - Прим. перев.

49

Названия всех крупных примеров этой книги начинаются с приставки «Py». Это - соглашение, принятое в мире Python. Если покопаться на сайте http://www.python.org, можно найти другое свободно распространяемое программное обеспечение, следующее этой схеме именования: PyOpenGL (интерфейс к графической библиотеке OpenGL для языка Python), PyGame (набор инструментов для разработки игровых программ на языке Python) и многие другие. Я не знаю, с кого это началось, но эта схема оказалась достаточно «Пи-кантным» способом рекламы языка программирования для всего мира программного обеспечения с открытыми исходными текстами. Если Питонист слишком прямолинеен - это не Питонист!

50

Интересно отметить, что даже текстовый редактор IDLE в Python 3.1 страдает от тех же двух ошибок, описываемых здесь и ликвидированных в текущей версии PyEdit, - IDLE в версии 3.1 вставляет содержимое файла при открытии начиная со второй строки, а его операция поиска во внешних файлах (напоминающая диалог Grep в PyEdit) вызывает крах в результате ошибки декодирования при просмотре стандартной библиотеки Python, что вызывает аварийное завершение IDLE. Здесь вполне уместно вспомнить поговорку про сапожника без сапог...

51

Здесь игра слов: имя метода pack_forget дословно означает «забыть, что был скомпонован». - Прим. перев.

52

Чтобы не выставлять программистов в невыгодном свете, следует отметить, что ко мне неоднократно обращались с просьбами прочитать лекции о программировании на языке Python для физиков, которые имели более богатую математическую практику, чем я, но многие из которых благополучно злоупотребляли общими блоками и операторами GO TO языка FORTRAN. Специализация в профессиональной деятельности может всех нас в чем-то превратить в новичков.

53

   В ноябре 2010 года вышла версия NumPu 1.5.1 для Python 3.1. - Прим. перев.

54

   Кроме этого следует учитывать, что, в отличие от координатных осей, используемых в планиметрии, на которых значения по оси Y возрастают снизу вверх (ось направлена вверх), на холсте ось Y направлена вниз. Это приводит к тому, что для вычисления на холсте позиции по Y вычисленная для точки координата Y вычитается из начальной координаты Y, а не прибавляется к ней, как в случае со значениями по оси X. - Прим. ред.