如何编写上下文管理器来将变量恢复为其原始值?例如:
x = 5
with Restorer(x):
x = 6
...
print(x)
输出为: 5
最佳答案
这仅在特定情况下才有可能。通常上下文管理器只获取x
的值(实际上是一个引用)。它无法访问变量本身。
对于全局变量,如果调用函数定义在同一个模块中(或者代码只是放在同一个模块中,没有周围的函数),则调用可以写为
with Restorer('x'):
那么恢复器可以是这样的(省略错误检查):
class Restorer:
def __init__(self, varName):
self.varName = varName
def __enter__(self):
self.oldValue = globals()[self.varName]
def __exit__(self, exc_type, exc_val, exc_tb):
globals()[self.varName] = self.oldValue
关于Python上下文管理器恢复变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53771621/