Анимация
JavaScript
|
Главная Библионтека 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 |