使用 Python Exec 克服变量更新限制
在 Python 中,exec 函数允许在运行时动态执行 Python 代码。但是,当与局部变量一起使用时,它的行为可能会出现意外。
问题:
考虑以下代码:
def f(): a = 1 exec("a = 3") print(a) f()
在 Python 中2,此代码将打印 3,表明局部变量 a 已在 exec 调用中更新。然而,在 Python 3 中,它打印 1,这就提出了如何在 exec 调用期间更新局部变量的问题。
解决方案:
要解决这个问题,您需要显式地将本地字典传递给 exec 函数:
def foo(): ldict = {} exec("a = 3", globals(), ldict) a = ldict['a'] print(a)
通过使用 locals(),您创建一个新的本地exec 调用的变量命名空间。对该命名空间的修改将反映在 foo 函数的本地作用域中。
要点:
以上是如何在 Python 的 exec 函数中更新局部变量?的详细内容。更多信息请关注PHP中文网其他相关文章!