Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [ 65 ] 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

15.8 pprint - представление и вывод данных в более привлекательном виде

file и filename - файловый объект, открытый для чтения, и имя соответствующего файла (None и имя модуля, если модуль загружается не из файла). Аргумент description должен быть кортежем, описывающим тип модуля. Все необходимые аргументы, кроме имени модуля, возвращаются функцией find module() .

Если модуль успешно загружен, функция возвращает объект-модуль. В противном случае генерируется исключение (обычно ImportError). Заметим, что после загрузки модуля файл file (если он не равен None) необходимо закрыть, даже если было сгенерировано исключение. Лучше всего это делать в ветви finally инструкции try.

new module(name)

Возвращает новый пустой объект-модуль с именем name. Этот объект не добавляется в список sys.modules.

Модуль определяет следующие целочисленные константы, описывающие тип модуля:

PY SOURCE

Файл с исходным текстом на языке Python.

PY COMPILED

Байт-компилированный файл.

C EXTENSION

Динамически загружаемая библиотека.

PY RESOURCE

Ресурс в операционной системе Macintosh.

PKG DIRECTORY

Каталог пакета.

C BUILTIN

Встроенный модуль.

PY FROZEN

Вложенный модуль (модуль на языке Python, зашитый в интерпретатор).

Для совместимости с ранними версиями интерпретатора модуль также определяет несколько устаревших констант и функций. Хорошие примеры использования описанных здесь возможностей Вы найдете в стандартных модулях knee (этот модуль присутствует только в качестве примера - не следует считать его стандартным интерфейсом) и

rexec.



15.8. pprint - представление и вывод данных в более ... 213

Этот модуль предоставляет возможность получить форматированное представление произвольных объектов языка Python. Аналогично встроенной функции repr(), возвращаемый результат обычно можно использовать в качестве аргумента встроенной функции eval(). Если длина представления вложенных объектов больше разрешенного значения, представление каждого объекта будет расположено на отдельной строке.

Модуль определяет один класс:

PrettyPrinter ([keyword list])

Этот конструктор воспринимает несколько именованных аргументов (keyword list). Поток вывода может быть установлен с помощью аргумента с именем stream (должен быть объектом с методом write() ). Если поток вывода не задан, используется sys.stdout. Аргументы с именами indent, depth и width определяют формат представления. indent определяет отступ (количество пробелов) каждого последующего уровня вложенных объектов, по умолчанию равен 1. depth определяет максимальный уровень вложенных объектов, которые будут представлены - представление объектов на следующем уровне заменяется на . Если аргумент с таким именем не задан или его значение ложно, ограничений на количество уровней нет. Длина отдельных строк в представлении будет ограничена значением аргумента с именем width (по умолчанию 80 символов).

>>> import pprint, sys

>>> stuff = sys.path[:]

>>> stuff.insert(0, stuff[:])

>>> pp = pprint.PrettyPrinter(indent=4)

>>> pp.pprint(stuff)

[ [ ",

/usr/local/lib/pythonl.5,

/usr/local/lib/pythonl.5/test,

/usr/local/lib/pythonl.5/sunos5,

/usr/local/lib/pythonl.5/sharedmodules,

/usr/local/lib/pythonl.5/tkinter],

/usr/local/lib/pythonl.5,

/usr/local/lib/pythonl.5/test,

/usr/local/lib/pythonl.5/sunos5,

/usr/local/lib/pythonl.5/sharedmodules,

/usr/local/lib/pythonl.5/tkinter]

>>>

>>> import parser

>>> suite = parser.suite(open(pprint.py).read()) >>> tup = parser.ast2tuple(suite)[l][l][l] >>> pp = pprint.PrettyPrinter(depth=6) >>> pp.pprint(tup)

(266, (267, (307, (287, (288, (...))))))

Для простоты использования модуль также определяет несколько функций, использующих формат представления по умолчанию:



pformat( object)

Возвращает стоку с форматированным представлением объекта object.

pprint( object)

Выводит форматированное представление объекта object (с символом новой строки на конце) в файл, указанный при конструировании экземпляра.

isreadable( object)

Возвращает 1 , если представление объекта object может быть использовано для

pformat (object)

Возвращает строку с форматированным представлением объекта.

pprint (object [, stream])

Выводит форматированное представление объекта object (с символом новой строки на конце) в файл stream. Если аргумент stream не задан, используется sys.stdout. Эта функция может быть использована в интерактивном режиме для контроля значений.

>>> stuff = sys.path[:]

>>> stuff.insert(0, stuff)

>>> pprint.pprint(stuff)

[<Recursion on list with id=869440>,

/usr/local/lib/python1.5,

/usr/local/lib/python1.5/test,

/usr/local/lib/python1.5/sunos5,

/usr/local/lib/python1.5/sharedmodules,

/usr/local/lib/python1.5/tkinter]

isreadable(object)

Возвращает 1 , если представление объекта object может быть использовано для его восстановления с помощью функции eval(), иначе возвращает 0. Всегда возвращает 0 для рекурсивных объектов.

>>> pprint.isreadable(stuff)

isrecursive( object)

Возвращает 1 , если объект содержит рекурсивные ссылки, иначе возвращает 0 .

saferepr( object)

Выводит неформатированное представление объекта object с рекурсивными ссылками, представленными в виде <Recursion on type with id=id>, где type и id - тип и идентификатор объекта.

Экземпляры класса PrettyPrinter имеют следующие методы, принимающие во внимание значения именованных аргументов, переданных конструктору:



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [ 65 ] 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145