首页 > 后端开发 > Python教程 > 如何在 Python 的 exec 函数中更新局部变量?

如何在 Python 的 exec 函数中更新局部变量?

Barbara Streisand
发布: 2024-12-06 01:58:10
原创
685 人浏览过

How Can I Update Local Variables Within Python's `exec` Function?

使用 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 3 优化了局部变量存储,影响了 exec 的行为.
  • exec 的默认本地字典无法在 Python 中修改3.
  • 使用显式本地字典允许在 exec 调用中更新局部变量。

以上是如何在 Python 的 exec 函数中更新局部变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板