Анимация
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.3 atexit - выполнение действий при окончании работы программы

Доступен, начиная с версии 2.0.

Модуль atexit определяет единственную функцию, предназначенную для регистрации. Зарегистрированные с помощью нее функции будут автоматически вызваны при нормальном окончании работы программы. Функции не будут вызваны, если процесс программы был прерван с помощью некоторых сигналов, возникла фатальная внутренняя ошибка интерпретатора, а также при вызове функции os. exit().

Модуль предоставляет альтернативный интерфейс к функциональности, предоставляемой переменной sys.exitfunc. Таким образом, модуль может работать некорректно при использовании кода, который устанавливает sys.exitfunc напрямую. В частности, стандартные модули языка Python могут использовать atexit не предупреждая об этом. Во избежание конфликтов, авторам, использующим sys.exitfunc следует внести соответствующие изменения в программы.

DEBUG STATS

Выводить статистику при запусках сборщика. Эта информация может быть использована при выборе частоты запусков.

DEBUG COLLECTABLE

Выводить информацию о найденных недоступных объектах, которые подлежат удалению.

DEBUG UNCOLLECTABLE

Выводить информацию о найденных недоступных объектах, которые не могут быть удалены. Эти объекты будут добавлены в список garbage.

DEBUG INSTANCES

Если установлен флаг DEBUG COLLECTABLE или DEBUG UNCOLLECTABLE, выводить информацию о найденных экземплярах классов.

DEBUG OBJECTS

Если установлен флаг DEBUG COLLECTABLE или DEBUG UNCOLLECTABLE, выводить информацию о найденных объектах, не являющихся экземплярами классов.

DEBUG SAVEALL

При использовании этого флага все найденные недоступные объекты будут добавляться в garbage, в том числе и те, которые могут быть удалены.

DEBUG LEAK

Флаги, необходимые для вывода информации, полезной при поиске утечек памяти (dEBUG COLLECTABLE DEBUG UNCOLLECTABLE DEBUG INSTANCES DEBUG OBJECTS DEBUG SAVEALL).



15.4. types - имена для всех встроенных типов 201

register(func ...)

Регистрирует func как функцию, которая должна быть выполнена при завершении работы программы. Все остальные аргументы (позиционные и именованные) будут сохранены и использованы для вызова func.

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

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

try:

count = int(open("/tmp/counter").read()) except IOError: count = 0

def incrcounter(n): global count count = count + n

def savecounter():

open("/tmp/counter", "w").write("%d" % count)

import atexit

atexit.register(savecounter)

См. также реализацию модуля readline, демонстрирующую использование возможностей модуля atexit для чтения и записи файлов истории команд.

15.4 types - имена для всех встроенных типов

Этот модуль определяет имена для всех встроенных типов объектов, используемых интерпретатором (сами типы описаны в главе 11). Вполне безопасно использовать инструкцию from types import * - модуль не определяет никаких имен, кроме тех, которые здесь перечислены. Все имена, которые будут добавлены в будущих версиях этого модуля, будут иметь окончание Type .

Имена для объектов-типов чаще всего используют в функциях, если действия, которые необходимо выполнить, зависят от типа аргумента. Например:



from types import * def delete(list, item):

if type(item) is IntType:

del list[item] else:

list.remove(item)

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

NoneType

Объект, имеющий тип None. Существует только один объект этого типа - None (пустой объект).

TypeType

Объект, имеющий тип type (тип) - тип объектов, возвращаемых встроенной функцией type() . Все объекты, определенные в этом модуле, являются объектами именно этого типа.

IntType

Объект, имеющий тип int (целое число, например, 1). LongType

Объект, имеющий тип long int (длинное целое число, например, FloatType

Объект, имеющий тип float (вещественное число, например, 1.0). ComplexType

Объект, имеющий тип complex (комплексное число, например, 1.0j). StringType

Объект, имеющий тип string (строка, например, Python). UnicodeType

Объект, имеющий тип unicode (строка Unicode, например, uPython). TupleType

Объект, имеющий тип tuple (кортеж, например, (1, 2, 3) ).

XRangeType

Объект, имеющий тип xrange. Объекты этого типа возвращаются встроенной функцией xrange() .

BufferType

Объект, имеющий тип buffer (буфер, создается встроенной функцией buffer).

ListType

Объект, имеющий тип list (список, например, [1, 2, 3] ).



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