5.7 实现类似 defer 的延迟调用 ============================= .. image:: http://image.iswbm.com/20200804124133.png 在 Golang 中有一种延迟调用的机制,关键字是 defer,例如下面的示例 .. code:: go import "fmt" func myfunc() { fmt.Println("B") } func main() { defer myfunc() fmt.Println("A") } 输出如下,myfunc 的调用会在函数返回前一步完成,即使你将 myfunc 的调用写在函数的第一行,这就是延迟调用。 :: A B 那么在 Python 中否有这种机制呢? 当然也有,只不过并没有 Golang 这种简便。 在 Python 可以使用 **上下文管理器** 达到这种效果 .. code:: python import contextlib def callback(): print('B') with contextlib.ExitStack() as stack: stack.callback(callback) print('A') 输出如下 :: A B