Python 多个函数中的未绑定局部错误

Python 多个函数中的未绑定局部错误,python,Python,我一直在创建一系列随机事件,其中每个函数对一组主要变量执行不同的操作,但我不断得到未绑定的局部错误。这是我的代码的简化版本 variable = 1 def main(): global variable secondary() variable = secondary() def secondary() variable += 1 return variable 再一次,这是解释我的代码的一种非常简单的方法,但是变量+=1是表示次要

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

  variable = 1

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

 def secondary()
    variable += 1
    return variable

再一次,这是解释我的代码的一种非常简单的方法,但是变量+=1是表示次要函数中错误的部分,变量没有定义。您必须执行
全局变量
,这将使变量可访问。另外,您调用secondary两次,这会使变量上升两次,但不确定您是否希望这样做。此外,secondary在括号后没有冒号,这会导致语法错误。最后,代码很可能没有正确缩进,因为次要变量没有缩进,尽管其他代码块都缩进了。

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

UnboundLocalError: local variable 'v' referenced before assignment
这种情况发生在这里:

v = 1

def secondary()
    v += 1
这里的问题是由于Python特有的行为造成的,而且有点奇怪(请原谅,我将
变量的名称更改为
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
添加
global variable
告诉Python,您对
variable
的引用是指具有该名称的全局变量,即使您正在对其进行写入

我建议以后不要给变量命名
variable
。这只会导致混乱