UnboundLocalError:赋值前引用的局部变量'sum'

时间:2016-04-16 02:40:21

标签: python-2.7

抱歉,我的英语不是很好,但我想我可以说清楚。

代码1:

# coding:utf-8

sum = 5

def add(x, y):
	print sum
	sum = x + y

if __name__ == '__main__':
	add(7, 8)

当我运行此代码时,出现错误,下面是错误消息。

ssspure:python ssspure $ python test.py Traceback(最近一次调用最后一次):   文件“test.py”,第11行,in     加(7,8)   文件“test.py”,第6行,添加     打印总和 UnboundLocalError:赋值前引用的局部变量'sum'

代码2:

# coding:utf-8

sum = 5

def add(x, y):
	sum = x + y
	print sum

if __name__ == '__main__':
	add(7, 8)

我可以成功运行code2。

我只是在“sum = x + y”语句下面移动“打印总和”,为什么code1出错,code2运行成功!

2 个答案:

答案 0 :(得分:0)

对于code1:

你没有宣布总和。您在add函数之外定义的总和对添加函数的总和没有影响。

你可以在你的函数中放置sum = 0,这样就可以了。

事实上,你在code2中这样做了。你将和未结算为x + y

答案 1 :(得分:0)

问题是因为局部变量和全局变量具有相同的名称。因此,该函数将优先考虑局部变量。因为未分配局部变量,所以它给出了错误,未分配局部变量。

我们可以通过以下方式解决此问题: 1.在函数中使用全局关键字 2.保持名字不同。 3.使用函数globals()

谢谢