gpt4 book ai didi

用于临时变量分配的 Python 上下文管理器

转载 作者:行者123 更新时间:2023-12-04 23:16:12 24 4
gpt4 key购买 nike

我经常需要用其他东西临时切换变量的值,做一些依赖于这个变量的计算,然后将变量恢复到它的原始值。例如:

var = 0
# Assign temporary value and do computation
var_ori = var
var = 1
do_something_with_var() # Function that reads the module level var variable
# Reassign original value
var = var_ori

这似乎是使用上下文管理器( with 语句)的明显机会。 Python 标准库是否包含任何这样的上下文管理器?

编辑

我知道这种事情通常由其他比临时更改变量更好的方法来处理。然而,我并不要求明显的解决方法。

在我的实际工作案例中,我无法更改 do_something_with_var功能。实际上,这甚至不是一个函数,而是一串代码,它作为某些元编程的一部分在全局命名空间的上下文中被评估。我给出的示例是我能想到的最简单的示例,它使我的问题与临时变量有关。我没有要求获得我的示例代码的解决方法(正确版本),而是要求我的书面问题得到答案。

最佳答案

不,因为上下文管理器不能像那样在调用者的范围内分配变量。 (任何认为您可以使用 localsinspect 的人,请尝试使用您在函数中提出的上下文管理器。它不会起作用。)

有一些实用程序可以处理不是局部变量的东西,例如模块全局变量、其他对象属性和字典……但它们是 unittest.mock.patch 及其相关功能,因此在非测试环境中使用它们之前,您应该强烈考虑其他替代方案。像“暂时修改这个东西然后恢复它”这样的操作往往会导致代码困惑,并且可能表明你使用了太多的全局状态。

关于用于临时变量分配的 Python 上下文管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41454678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com