我知道这是一个讨论很多的话题,我知道有很多关于它的主题(我已经全部阅读过了),但我仍然只是不明白。
未定义的变量(本地和全局)是我在Python中遇到的最大问题,我不知道在尝试修复它时我正在做什么。我将通过并添加一个x = 0或一个var = func(var)一些地方,有时它有效,有时它不会。令人难以置信的沮丧,我真的需要一些帮助。我问过我的老师,但通常需要一段时间才能回到我身边,我希望能解决这个问题。
以下是我的工作内容:http://pastebin.com/KTuh7D2p(这是针对学校的。)
有人可以向我解释变量吗?
我一直收到这样的错误:
Traceback (most recent call last):
File "Project1-v2.py", line 144, in <module>
main()
File "Project1-v2.py", line 12, in main
itemsSave = tagYell(items, itemsSale, itemsSave)
UnboundLocalError: local variable 'itemsSave' referenced before assignment
答案 0 :(得分:2)
在这种特殊情况下,我猜这是因为你试图用itemSave
来定义自己。这相当于说:
x = 5 + x
您第一次定义x
。
在尝试使用其值之前,您需要提供一些关于itemSave
的背景信息。
例如,这个程序:
myNum = 5
x = float(myNum+x)
print x
会给我一条错误消息:
x = float(myNum+x)
NameError: name 'x' is not defined
然而,这样可以正常工作,并打印“15”:
myNum = 5
x = 10
x = float(myNum+x)
print x
答案 1 :(得分:2)
所以这是你要问的一段代码
def main():
print "Welcome to the shop!"
menu()
itemsSale = 0
items = getItems()
itemsSave = tagYell(items, itemsSale, itemsSave)
itemsSale = calcTax(itemsSale)
taxTags(items)
printInfo(items, itemsSale, itemsSave)
enterItem = input("To enter another item number, press 1. To end, press 0: ")
print #Line break
此行导致错误
itemsSave = tagYell(items, itemsSale, itemsSave)
您正试图将itemsSave
传递到tagYell()
函数,但它还没有值。
Python知道这是因为你在同一范围内分配给itemsSave
,即。 itemsSave = ...
它必须是一个未绑定的局部变量,因此它甚至不会查看全局变量以查看它是否在那里定义。