gpt4 book ai didi

python - 多个函数中的未绑定(bind)本地错误

转载 作者:行者123 更新时间:2023-12-03 08:29:44 24 4
gpt4 key购买 nike

我一直在创建一系列随机事件,其中每个函数对一组主要变量执行不同的操作,但我不断收到未绑定(bind)的本地错误。这是我的代码的简化版本

  variable = 1

def main():
global variable
secondary()
variable = secondary()

def secondary()
variable += 1
return variable

这又是解释我的代码的一种非常简单的方式,但变量 += 1 是表达错误的部分

最佳答案

我注意到了 @TimothyChen 提到的所有相同问题。我想解释一下您所询问的错误,即:

UnboundLocalError: local variable 'v' referenced before assignment

这发生在这里:

v = 1

def secondary()
v += 1

这里的问题是由于 Python 特有的行为造成的,并且有点奇怪(请原谅我将名称 variable 更改为 v 以避免混淆) ...

如果声明了一个名为 v 的全局变量,然后您仅从函数内名为 v 的变量中读取数据,Python 会声明您正在从全局变量中读取数据名为v的变量。

如果声明了一个名为 v 的全局变量,然后您在函数内写入名为 v 的变量,Python 会说这是该函数的本地不同变量。函数,除非您首先在该函数中说 global v,之后 v 引用全局变量。

因此,对于您的函数 secondary() 来说,您是 A) 在函数中写入 v,并且 B) 您没有说 global v 函数中的任何位置。所以 Python 表示,在该函数内部,v 是该函数的本地唯一变量。但是,如果 v 是函数的本地函数,并且您对该函数中变量的第一个引用是:

v += 1

那么在此之前 v 尚未被赋值。由于这行代码首先从 v 读取,然后将新值写回其中,因此您会收到所看到的错误,因为尝试从尚未读取的变量中读取数据。分配了一个值。

很明显,要解决此问题,您需要做的是声明您的辅助函数,如下所示:

def secondary()
global variable
variable += 1
return variable

添加全局变量告诉Python,您对变量的引用是指具有该名称的全局变量,即使您正在写入它。

我建议以后不要将变量命名为variable。这只会导致困惑。

关于python - 多个函数中的未绑定(bind)本地错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65515527/

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