簡體   English   中英

PyCharm:在分配之前可能會在finally塊中引用變量嗎?

[英]PyCharm: Variable in finally block might be referenced before assignment?

PyCharm警告我說,可變category可以賦值之前被引用,但我不這么認為。

Exception應該捕獲每個Exception (致命錯誤除外),最后在tryexcept塊之后被調用。

    try:
        category = lst[2]
    except:
        category = None
    finally:
        if not category: #here
            category = self.default_category

在此處輸入圖片說明

你怎么看? 是真的還是錯誤?

也許PyCharm在看到分配時沒有考慮“分配給什么”。 就是說, None是什么與眾不同,請考慮是否改寫了以下內容:

try:
    category = lst[2]
except:
    category = Noone
finally:
    if not category:
        category = self.default_category

(或None/1等),然后您將得到:

NameError: name 'category' is not defined

如果lst為空,則在異常中會有一個異常:

當try子句中發生了異常且未由except子句處理(或在except或else子句中發生)時,將在執行finally子句后重新引發該異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM