在赋值

时间:2016-10-25 04:19:31

标签: python django

我目前正在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

1 个答案:

答案 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对象不存在时引发的错误,但除了它之外,一般都是坏的,除了。