我目前正在python中创建一个while循环,我遇到了这个问题:
local variable 'statement' referenced before assignment
这是我的代码:
while (statement == True):
self.headNode = settings.EMPTY_UUID
try:
lastNode = Task.objects.get(next = self.headNode)
self.headNode = lastNode.id
statement = True
except:
statement = False
我担心如果我在while语句之前初始化statement = True,因为它可能变成无限循环
例如,这是Task.objects的数据:
id name next
001 task1 002
002 task2 003
003 task3 000
我想获得根任务的ID,001
答案 0 :(得分:2)
评论已经指出了答案,但这是一种(更多Pythonic)编码方式:
while True:
self.headNode = settings.EMPTY_UUID
try:
lastNode = Task.objects.get(next=self.headNode)
self.headNode = lastNode.id
break
except Task.DoesNotExist:
break
即使您在while循环后需要statement
的值,也不需要变量:此时statement
显然是False
。
请注意,我还更改了except
语句。这是我的假设,你想要捕获当相关的Task
对象不存在时引发的错误,但除了它之外,一般都是坏的,除了。