📜  Python退出处理程序 (atexit)

📅  最后修改于: 2022-05-13 01:55:02.253000             🧑  作者: Mango

Python退出处理程序 (atexit)

atextit是Python中的一个模块,它包含两个函数register()unregister() 。该模块的主要作用是在解释器终止时执行清理。注册的函数在解释器终止时自动执行。每当程序被Python未处理的信号杀死时,调用os.exit()或检测到Python致命内部错误时,通过此模块注册的函数都不会执行。

  • register():注册函数将函数作为参数,在解释器终止时执行。如果有多个函数作为参数传递,例如 (fun1(), fun2()..),那么执行将按相反的顺序 (...fun2(), fun1())。执行发生在后进先出 (LIFO) 概念中。

    注意:这个函数也可以用作装饰器。

    # 示例 1:

    # Python program to demonstrate
    # atexit module
      
      
    import atexit
      
    names = ['Geeks', 'for', 'Geeks']
      
    def hello(name):
        print (name)
      
    for name in names:
      
        # Using register()
        atexit.register(hello, name)
    

    输出 :

    Geeks
    for
    Geeks
    

    # 示例 2:使用 register 作为装饰器

    # Python program to demonstrate
    # atexit module
      
      
    import atexit
      
    # Using register() as a decorator
    @atexit.register
    def goodbye():
        print("GoodBye.")
    

    输出 :

    GoodBye.
    
  • unregister(): unregister()函数从程序中定义的函数中删除指定的乐趣。它提供了当解释器终止时不会调用 fun 的保证。

    例子:

    # Python program to demonstrate
    # atexit module
      
      
    import atexit
      
    names = ['Geeks', 'for', 'Geeks']
      
    def hello(name):
        print (name)
      
    for name in names:
      
        # Using unregister() 
        atexit.unregister(hello) 
    

    输出 :

    No Output