gpt4 book ai didi

Python 局部变量和全局变量

转载 作者:太空宇宙 更新时间:2023-11-03 11:13:29 25 4
gpt4 key购买 nike

def spam():
print(eggs)
eggs = 13

eggs = 12
spam()

这给出了错误:

UnboundLocalError:赋值前引用了局部变量“eggs”

但这不是:

def spam():
print(eggs)


eggs = 12
spam()

为什么?

最佳答案

在第一个示例中,当您执行 eggs = 13 时,函数会尝试在其范围内查找定义,假设它是一个局部变量,并且由于函数中没有定义这样的变量, 赋值前引用了局部变量“eggs”。 抛出异常。

在第二个例子中,由于不存在这样的赋值,eggs 取自全局作用域,即 eggs=12,因此这里没有抛出这样的异常

要解决此问题,您需要在函数内分配一个局部变量 eggs。这里只引用和改变了局部变量eggs,全局变量eggs也是一样。

In [40]: def spam(): 
...: eggs = 12
...: print(eggs)
...: eggs = 13
...: print(eggs)
...:
...: eggs = 12
...: spam()
...: print(eggs)
12
13
12

关于Python 局部变量和全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56291150/

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