我有一堆代码:
statement1(args)
statement2(args)
statement3(args)
statement4(args)
statement5(args)
我想把语句分成块,并在每个块之后写入日志。日志记录有点复杂:我想记录每个块的运行时间和块执行后特定数据结构的状态。所以我创建了一个名为log_block
的装饰器,它处理所有这些细节。现在我的代码如下:
这个很好用,但有点笨重。很烦人的是,我必须分别调用三个块函数,如果我想在块之间共享一个变量,那么我要么必须给块函数提供参数和返回语句,要么使用全局变量,这两种方法都不是特别好用的。我真正想要的是这样的语法:
@log_block()
statement1(args)
statement2(args)
@log_block()
statement3(args)
@log_block()
statement4(args)
statement5(args)
所以我直接修饰语句,而不是将它们封装在辅助块函数中。有什么办法可以达到这样的目的吗?在
Context managers正是您要找的。您可以将它们与
with
语句一起使用,它们定义在进入和退出with块时要运行的代码。在相关问题 更多 >
编程相关推荐