繁体   English   中英

赋值之前引用的局部变量“ statement”

[英]local variable 'statement' referenced before assignment

我目前正在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,该ID应该为001

注释已经为您指出了答案,但这是一种(更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对象不存在时引发的错误,但是,除了裸露的包罗万象之外,通常是不好的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM