Библиотека сайта 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.