簡體   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