Python 2.7错误,在函数中具有自引用变量赋值:赋值前引用的局部变量

时间:2012-05-11 11:16:39

标签: python python-2.7 self-reference

以下脚本生成“赋值前引用的局部变量'var'”错误:

def func1():
    var = var + 1

var = 1

func1()

您如何建议更正代码?为什么在调用函数之前在脚本中声明变量时会发生此错误?

2 个答案:

答案 0 :(得分:4)

您可以在其他函数中使用全局变量,方法是在修改它的每个函数中将其声明为全局变量:

>>> var = 2
>>> def func():
...     global var
...     var = var+1
...     return var
... 
>>> func()
3

OP编辑后的问题: 如果在定义函数后移动变量,则需要将其作为参数传递给函数。

>>> def func(var):
...     var = var+1
...     return var
... 
>>> var = 2
>>> func(var)
3

答案 1 :(得分:0)

函数有自己的范围,与主程序分开。因此,尽管您已在主程序中定义了var,但func1()和func2()并不知道。要修复错误,您需要将参数传递给两个函数,然后像这样返回新值:

def func1(var):
    var = var + 1
    return var

var = 1

var = func1(var)