gpt4 book ai didi

python - exec() 和变量范围

转载 作者:行者123 更新时间:2023-12-04 06:31:44 32 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How does exec work with locals?

(3 个回答)


2年前关闭。




我确定这已被询问和回答,但我找不到具体的:

我只是在学习 Python,我不理解 变量范围问题 .

我已将问题简化为:

情况1:

def lev1():
exec("aaa=123")
print("lev1:",aaa)

lev1()

案例二:
def lev1():
global aaa
exec("aaa=123")
print("lev1:",aaa)

lev1()

案例3:
def lev1():
exec("global aaa ; aaa=123")
print("lev1:",aaa)

lev1()
  • Case 1Case 2aaa在打印语句中未定义。
  • Case 3作品。 aaa 在哪里实际存在于Case 1Case 2 ?
  • 有没有办法访问aaa在没有 global 的情况 1 中宣言?
  • 最佳答案

    来自 docs :

    Note: The default locals act as described for function locals() below: modifications to the default locals dictionary should not be attempted. Pass an explicit locals dictionary if you need to see effects of the code on locals after function exec() returns.



    换句话说,如果您调用 exec对于一个论点,您不应该尝试分配任何变量,并且 Python 不 promise 如果您尝试会发生什么。

    你可以有 exec通过传递 globals() 将代码分配给全局变量明确地。 (使用显式 globals dict 而没有显式 locals dict, exec 将对全局变量和本地变量使用相同的 dict。)
    def lev1():
    exec("aaa=123", globals())
    print("lev1:", aaa)

    lev1()

    关于python - exec() 和变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45535284/

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