gpt4 book ai didi

python - 不理解 undefined reference

转载 作者:行者123 更新时间:2023-12-03 18:40:49 24 4
gpt4 key购买 nike

我的理解是,如果我在函数中使用变量而函数中没有赋值语句,它将在函数“外部”查找变量。

这似乎是一个列表的情况,但不是一个简单的变量。

在下面的代码中,我被告知语句“aa += 1 包含一个未解析的引用”aa“,但是对 bb[0] 的引用很好。这是为什么?

aa = 0
bb = [9, 7]

def bbtest():
aa += 1
bb[0] += 1

最佳答案

这有点晦涩难懂,但这是有原因的:在编译一个函数时,Python 会查看那里使用的所有名称并确定它们来自哪个范围。未分配给的名称将使用外部作用域(全局或非本地),分配给 的名称是本地的。因为 aa += 1 算作一个赋值,所以它将 aa 标记为局部变量。

虽然下一行看起来很相似,但它在做一些不同的事情:你没有在任何地方为名称 bb 赋值。您正在从非本地/全局名称(列表)中检索某些内容,然后分配给它的一个元素。

您可以通过将 aa 显式标记为非本地或全局来解决此问题:

def bbtest():
global aa
aa += 1
bb[0] += 1

另一方面,您可以通过分配给名称来使 bb 案例失败,甚至在之后:

def bbtest():
bb[0] += 1
bb = "foo"

关于python - 不理解 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59904834/

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