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