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

3

Я вполне серьезно. На курсах по изучению Python, которые я веду уже довольно давно, я постоянно использовал имя «Bob Smith» (Боб Смит), возраст 40,5 лет и должности «developer» (разработчик) и «manager» (руководитель) для создания фиктивной записи в базе данных, пока на курсах в Чикаго я не встретил студента с именем Боб Смит (Bob Smith), которому было 40,5 лет, и который занимал должности разработчика и руководителя. В жизни иногда случаются курьезы.

4

Они могут проникать и в ваше подсознание. Новички Python иногда описывают такое явление, как «сны на Python» (попробуйте дать упрощенную интерпретацию по Фрейду...).

5

   Д. Бизли «Python. Подробный справочник», СПб.: Символ-Плюс, 2010.

6

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

7

Может случиться, что Python видит переменную окружения PYTHONPATH иначе, чем вы. Синтаксическая ошибка в файлах настройки системной оболочки может испортить значение PYTHONPATH, даже если она кажется вам нормальной. Например, в Windows при наличии пробелов вокруг = в команде DOS set в файле с настройками (например, set NAME = VALUE) в переменную NAME в действительности будет записана пустая строка, а не VALUE!

8

Инструкция на языке Python exec(open(file).read()) тоже выполняет код программного файла, но внутри того же процесса, который ее вызвал. В этом отношении она похожа на операцию импортирования, но по своему действию она больше похожа на операцию вставки содержимого файла в вызывающую программу в том месте, где стоит вызов exec (если явно не передаются словари глобального или локального пространства имен). В отличие от операции импортирования, функция exec читает и выполняет программный код файла без всяких проверок (один и тот же файл можно выполнить несколько раз в одном процессе); при выполнении файла не создается объект модуля; и, если функции явно не передаются словари пространств имен, операции присваивания в программном коде файла могут затирать переменные в области видимости, где находится вызов exec. За дополнительными подробностями обращайтесь к руководству по библиотеке Python.

9

Так происходит по умолчанию. Некоторые инструменты запуска программ позволяют сценариям передавать в дочерние программы значения переменных окружения, отличные от своих собственных. Например, функция os.spawnve по своему поведению напоминает функцию os.spawnv, но принимает в виде аргумента дополнительный словарь, представляющий окружение оболочки, которое должно быть передано запускаемой программе. Некоторые разновидности os.exec* (имена которых оканчиваются на «е») тоже принимают явное определение окружения. Подробнее о формате вызова os.exec* рассказывается в главе 5.

10

Обратите внимание, что функция input возбуждает исключение, сигнализируя о конце файла, однако методы чтения файлов просто возвращают в этом случае пустую строку. Поскольку input также отсекает символ конца строки, то при чтении пустой строки из файла также возвращается пустая строка, поэтому исключение совершенно необходимо, чтобы определить конец файла. Методы чтения файлов сохраняют символ конца строки и возвращают для пустых строк символ \n , а не “”. Это одно из отличий прямого чтения из sys.stdin от функции input. Последняя также принимает в качестве аргумента строку приглашения к вводу, которая автоматически выводится перед приемом входных данных.

11

Например, для обработки каналов, описываемых в главе 5. В Python функция os.pipe возвращает два файловых дескриптора, которые можно обрабатывать средствами модуля os или обертывать их объектами файлов с помощью функции os.fdopen. При использовании файловых инструментов из модуля os данные через каналы передаются в виде строк байтов, а не текста. Кроме того, низкоуровневые механизмы могут также потребоваться для работы с некоторыми файлами устройств.