Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Опечатки

замеченные в книге Р.Сузи "Python в подлиннике. Наиболее полное руководство.",
выпущенной в январе 2002 года издательством компьютерной литературы BHV-Санкт-Петербург.


1. Неверная иллюстрация
с121 рис 6.5 должен выглядеть следующим образом:

2. Неверный текст

с158 от начала раздела "Строки" до "...будет введена в строку буквально."
на с159 нужно заменить на:

   Строки

Строка (string) -- последовательность символов. В
языке Python строка является неизменяемой структурой данных: созданную
строку нельзя изменять. Можно только создать новую строку, скопировав
часть элементов старой строки. Поэтому операции со строками могут
производить их неявное копирование. В отличие от списка или кортежа, но
аналогично числовым типам данных, операция присваивания приводит к
копированию строки, как это принято в других языках программирования. Об
этом следует помнить, производя конкатенацию (склеивание) строк в цикле.
К строкам применимы операции над последовательностями и другие, чисто
строковые операции.

Версии Python, начиная с 1.6, имеют два типа строк: "обычные" строки и
Unicode-строки. В обычных строках каждый символ кодируется одним байтом и
визуальное представление этих символов определяется настройками конкретной
системы. Если первые 128 кодов, как правило, подчиняются стандарту ASCII,
то вторая половина может представлять символы из какого-то одного
национального алфавита. Чтобы работать с символами многих естественных
языков сразу, необходимо использовать Unicode-строки. В реализации Unicode
3.0 в Python каждый символ представляется двумя или четырьмя байтами (в
зависимости от настроек, заданных при компиляции интерпретатора Python).

  Предпреждение

Строки и Unicode-строки нужно сочетать в различных операциях с
осторожностью, явно указывая вид кодировки обычных строк, так как попытка
неявного приведения обычной строки в Unicode обычно оканчивается неудачей,
если в строке есть символы с кодами больше 127.


с462 табл 9.66 вместо "атрибуты которого считывает функция"
оставить только "атрибуты которого считывает"

с457 "контекста"
14  -- количество произвольных переключений контекста
15  -- количество непроизвольных переключений контекста

с542-9 "DOM документ на языке XML" -> "В DOM документ на языке XML"

с522 фрагмент перед таблицей 9.90 от def __init__ ...
до self.writer ...
убрать.

с523 Правильно было бы: "Убирает n (по умолчанию n равно 1) элементов
с вершины стека стилей"

с551, табл. 9.109. 
"rgbimg - Чтение и запись файлов в формате SGI RGB"
(а не аудиофайлов, как утвержадлось)

с247 в абзаце внизу разбить предложение на два:
Для управления такими ситуациями и служит оператор try
двух разновидностей. Возбудить исключение из программы можно с
помощью оператора raise.

с297+13 (соответствии) -> (отображении)
с205+5 (соответствия) -> (отображения)

с30 В заголовке листинга 2.9:
Склонение слова "рубль"
(а не "рубляь")

с25+8 В тексте примера должно быть:
>>> # ошибка: объект не поддерживает присваивание своим элементам
(а не:
>>> # ошибка: объекту не поддерживает присваивание своим элементам
)

с252-15  "__debug__ обычно равна единице", а не нулю.

с443+14  "окрашиваем кнопку в цвет победителя"
(было забыто "в")

с142-12 "Практические примеры из первой части..."
(а не практически)

с219+17 "# Числа кратные 12"
(а не "кратные на 12"

с151-4 и до конца абзаца, с152+5 заменить текст на:

Язык Python является строго типизированным языком, как Pascal, C или 
Java, но в нем не нужно явно описывать переменные, аргументы и 
результаты функций, атрибуты классов, так как тип определяется динамически. 
В Python тип данных проверяется не на этапе компиляции в байт-код, 
а при исполнении соответствующей операции. Это получается потому, 
что все величины в Python являются объектами, а потому 
применимость операции определяется присутствием или отсутствием метода, 
соответствующего производимой операции. Такой подход имеет свои 
достоинства и недостатки. 

с167+2 
"...позволяет задавать отображение (mapping) между значениями..."
(а не "соответствие")

с185-5: Убрать "Суммирование чисел из небольшого файла, а
утроенные кавычки поместить на строку выше:

"""
Суммируем числа из не очень большого файла


c186+10: аналогично, убрать "Суммируем числа из большого файла" и
утроенные кавычки поместить на строку выше:

"""
Суммируем числа из из (возможно) очень большого файла.

с162+17 поставить "#" и пробел перед "Применение в присваиваниях..."
в самой первой строке примера

с176 табл. 8.8 убрать
", func_doc" из первой строки и
", func_name" из второй строки таблицы, оставив только
"__doc__" и "__name__" в первом столбце

с143-8 Должно быть: "в специальных каналах irc. Например, на серверах irc.freenode.net
есть канал #python"

Между с144+3 и c144+4 вставить абзац (данный в конце URL
выделить полужирным):

Если вы только начинаете работать с Python, ответ на заинтересовавший
вас вопрос, возможно, уже приведен в документе "The Whole Python FAQ"
(частозадаваемые вопросы по Python). Посмотрите 
http://www.python.org/doc/FAQ.html.

с66-13 "качестве"
с67-10 заменить "второй" на "следующий"
с72-19 в листинге 3.5 вместо
  "x3 = gen_mul(2)" написать
  "x3 = gen_mul(3)"
с72-15, с72-14  А в качестве результата выполнения (после листинга):
  68 15 30
  20

с128+11 "случае случится" -> "случае произойдет"
с139+18 "Java и Perl" -> "PHP и Perl"
с150-12 поставить пробел перед "def"

с232-2 Предложение должно звучать так:
"Если key неподходящего типа, нужно возбудить исключение
TypeError, а если не подходит значение ключа -- KeyError (для словарей),
IndexError (для последовательностей) или (более общее) LookupError."

с234+14 "слою" -> "срезу"
с234-12 "слою" -> "срезу"
с164 табл. 8.5 строка 2, столбей 2 "Слой" -> "Срез"

с242+10 Вместо "Фрагмент может... что и ":"" записать:
"Однострочный фрагмент можно записать после ":" в той же строке".
с246+16 "из определения функции" -> "из функции"
с261+8 Забыта точка: "модуль.py). Откомпилированный"
с290-3 "и delattr()" вместо "и setattr()"
с297-10 "<Ctrl>+<c> или <Ctrl>+<Del>" вместо "<Ctrl>+<C> или <Del>"
с498 табл. 9.81 3-я строка: 
     "buflen", а не "bufle" (во второй колонке)
     и "buflen", а не "buffersize" (в первой колонке)
с501-18 "hi" -> "i"
с583 табл. 9.133, строка 6: "за пределы мыши" -> "за пределы виджета"
с118-2 В лиснинге 6.1 не хватает вызова метода .pack():
frame = Frame(root); frame.pack()
с357-5 табл. 9.11: "\D"  Нецифра. Аналогично "[^0-9]"
  (D - прописная, а не строчная)
с320 листинг 8.65 - убрать return из 7-й строки листинга 

3. Лишние скобки после написания функции:
с38+8 ()() -> ()
с436 табл 9.52, первая колонка убрать лишние ()
с448 табл 9.57, первая колонка, первая строка убрать ()

4. Имена опций и т.п. должны быть строчными буквами

с192 табл 8.15, первая колонка, строки 2-4
с648 таблицы 9.160-9.161, первая колонка
с686 табл 13.1, первая колонка, первая строка
с689 табл 13.3, первая колонка, первая строка
c188 табл 8.12 первая колонка
с462 табл 9.66 первая колонка, вторая строка + переразбить чтобы (text, i) был в одной строке. 
с210 табл 8.19 первая колонка:
 строка 3: "h, l или L"
 строка 4: "d, i"
 строка 5: "u"
 строка 6: "o"
 строки 11, 12, 13: "c", "r", "s" соответственно.
c581 табл. 9.131 - в первой колонке все опции со строчных букв

5. Не выдержан стиль описания функций, забыто имя модуля
перед именем функции

с421+1 shutil.rmtree
с383-с385 поставить "time." по аналогии с другими описанными
  после квадратиков функциями, а именно:
  time.sleep, time.strftime, time.strptime, time.time
c458+10 termios.tcsendbreak(fd, duration)
c459+2 termios.tcsetattr(fd, when, attr_list) и поставить квадратик в этой строке
с398-3 строка снизу в таблице - read -> os.read
с464+14 поставить "pdb." перед "runcall" (по аналогии с соседними)
с628+3,4 квадратики перед описанием функции
с628+17 то же
с629+6 тоже квадратик, в также добавить "locale." перед "str(number)"
с629+18 тоже, и добавить "locale." перед "strcoll(s1, s2)"
с630+3 добавить "locale." перед "format(fmt, number"
с630-6,7 добавить квадратики перед именами функций locale.atoi, locale.atof
с631+8 квадратик + "locale." перед "strxfrm(string)"
с440+22 должно быть: "thread.get_ident() -> id"
с474+9, с474-6, с474-10 добавить "cgi." перед именем функции

6. Недочеты

с394-1 (перед таблицей) убрать упоминание DOS.
с530-2 убрать "f:" и добавить () после setProperty
c548-5 убрать { и } вокруг DocumentFragment
c450+8 "{pyo}-файлы" заменить на ".pyo-файлы"
с574 табл. 9.125, строка 13: убрать { и } вокруг ":D.S"
с575 табл. 9.126, строка 3: убрать { и } вокруг None 
с537-1 убрать "href:" в начале, оставив только http://www.w3.org/TR/REC-xml-names.
с143-10 убрать "href:" перед "http://..."
с440 табл 9.54 убрать { и } вокруг -1
с502-5 убрать { и } вокруг "="
с505 табл. 9.82, строка 1 убрать { и } вокруг ":"
с611+4 (после таблицы) убрать "f:" перед find_overlapping

7. Замена

с7+12 вместо оп_example написать оп_def
с316-12 заменить VCS на CVS
с647-14 заменить VCS на CVS
с159-5 заменить s.isdecimal на u.isdecimal
с160+1 заменить s.isnumeric на u.isnumeric
с423+19 "комбпнации" -> "комбинации"
с162+15 "предполается" -> "предполагается"

8. Обозначить стилем

с417 начиная с "Результат выполнения:"
выделить полужирным строки, которые начинаются на "python"
Первая такая строка: 
python getopt_eg1.py 1 2 3

последняя (на с418), выделить полужирным:
python getopt_eg1.py -a -b 2 -b 3

Тоже самое чуть ниже со строкой
python2.1 getopt_eg1.py -c

с15 В примере перед вторым на странице упражнением 
поставить >>> перед строками, начинающимися на print,
и выделить полужирным (по аналогии с примером на с18)

с159-20 Выделить слово suffix моноширинным (Courier)
в "Оканчивается ли на suffix"

с567 табл. 9.118, строка 5 убрать выделение полужирным 
с "Вместе с Jython"

9. Неправильно выделены URL (нужно полужирным)

с701-13
с701-15
с711+16

10. Не поставлены "квадратики" перед именами функций

с501-12  (socket.htons)
c479-6 unquote_plus
с479-12 quote_plus
с455-456 во всем разделе 9.9.3 в описаниях функций "resource."
с533-9 saxutils.XMLGenerator

11. В список литературы добавить:
 - книжку BHV про XSLT,
 - русский перевод "Python за 24 часа"
 - книжку Игоря Одинцова "Профессиональное программирование. Системный подход"
 - к книге Д.Откидача приписать: (не опубликовано)

12. Добавить в предметный указатель "аргументы командной строки"
указав на раздел Модуль sys.

13. Неотсортированные строки в таблице

с669 табл. 11.3: странный порядок функций, дважды повторены функции
   ones() и zeros(). Нужно отсортировать и убрать повторные описания

с669 табл. 11.1: не отсортированы строки таблицы.

14. Ошибки в листингах:

с89 Добавить строку 

import Combinatorial, random, BK_calc

в первую строчку листинга (перед def make_move...)

с92+8 Поставить точку после BK_computer_player.py.

с226+18 Убрать строку "print P().bbbbbbbbb"
из текста примера.

CD: На диске в каталоге примеров переименовать 04-012.py 
в BK_computer_player.py.