非常教程

Python参考手册

运行 | Runtime

atexit

2.0版本中的新功能。

源代码: Lib / atexit.py

atexit模块定义了一个函数来注册清理函数。 如此注册的功能在正常解释器终止时自动执行。 atexit以与其注册相反的顺序运行这些功能; 如果您在注册人终止时注册A,B和C,他们将按照C,B,A的顺序运行。

注意:当程序被未被Python处理的信号杀死,检测到Python致命内部错误或被调用时,不会调用通过此模块注册的函数os._exit()

这是由sys.exitfunc()变量提供的功能的替代接口。

注意:与其他设置sys.exitfunc的代码一起使用时,该模块不太可能正常工作。 特别是,其他核心Python模块可以在程序员不知情的情况下自由使用atexit。 使用sys.exitfunc的作者应该将其代码转换为使用atexit。 转换设置sys.exitfunc的代码的最简单方法是导入atexit并注册已绑定到sys.exitfunc的函数。

atexit.register(func[, *args[, **kargs]])

注册func作为函数在终止时执行。任何要传递给func的可选参数都必须作为参数传递给register()。可以多次注册相同的函数和参数。

在正常的程序结束时(例如,如果sys.exit()被调用或主模块的执行完成),所有注册的函数将按照先进先出的顺序调用。假定较低级别的模块通常会在高级模块之前导入,因此必须稍后进行清理。

如果在执行退出处理程序期间发生异常,则会打印回溯(除非SystemExit引发)并且保存异常信息。在所有退出处理程序有机会运行之后,最后的异常将被重新提出。

在版本2.6中更改:此函数现在返回func,从而可以将其用作装饰器。

扩展内容

模块readline读取和写入readline历史文件的atexit的有用示例。

1.atexit例子

下面的简单示例演示了模块在导入时如何从文件初始化计数器,并在程序终止时自动保存计数器的更新值,而不依赖应用程序在终止时显式调用该模块。

try:
    _count = int(open("counter").read())
except IOError:
    _count = 0

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

def savecounter():
    open("counter", "w").write("%d" % _count)

import atexit
atexit.register(savecounter)

定位和关键字参数也可以传递给register()被调用的被注册函数:

def goodbye(name, adjective):
    print 'Goodbye, %s, it was %s to meet you.' % (name, adjective)

import atexit
atexit.register(goodbye, 'Donny', 'nice')

# or:
atexit.register(goodbye, adjective='nice', name='Donny')

用作装饰者:

import atexit

@atexit.register
def goodbye():
    print "You are now leaving the Python sector."

这只适用于可以不带参数调用的函数。

Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法