2010-09-02 45 views
0

在Python函數中使用del時,我得到PyFlakes的誤報,告訴我該變量未定義。使用PyFlakes和del運算符

def foo(bar): 
    # what if it's ham? eww 
    if bar == 'ham': 
     del bar 
     return 
    # otherwise yummy! 
    print bar 

上述函數將返回以下錯誤:

C:\temp\test.py:7: undefined name 'bar' 

即使功能將正常工作。 有誰知道一個補丁來調整AST樹解析來改變它的處理方式嗎?如果這是別人遇到的問題?

回答

0

那麼你的問題是什麼?刪除參數名根本沒有任何意義,所以這不是真正的問題無論如何...

+0

我給出的函數在語法上是正確的,因爲,無論出於何種原因,您可以使用del操作符來刪除目的。然而,PyFlakes處理這個問題的方式是維護一個範圍內的變量字典,如果在你的代碼中使用了del操作符,它將依次執行: del self.scope [變量] 在示例I已在OP中列出,del調用之後立即返回,這意味着即使該變量被刪除,也可以在bar!='ham'的情況下使用,從而導致完美的代碼運行。 我希望有人有這方面的經驗 – aodj 2010-09-02 16:03:48