到目前爲止Python
編程中最令人沮喪的事情之一是缺乏某種「預分析」。例如,在Java
中,在實際編譯程序之前執行預分析,在該程序中檢查諸如姓名使用之類的事情。換句話說,如果我在一個區域中調用變量list_one
,並且說我在另一個區域將它拼錯爲list_on
,Java會說「嘿,你不能這樣做,我不知道list_on
是什麼。」有沒有辦法預先命名衝突的Python程序?
Python
似乎沒有這樣做,這是非常令人沮喪的!我有一個程序,大約需要15分鐘跑,而我是最後一件事14.5分鐘,看進去是像
NameError: name 'list_on' is not defined
難道他們的任何可用的工具都可以在那裏可以進行這種在解釋器實際運行程序之前檢查?如果沒有,有什麼辦法解決這個問題?
試過'pylint'? – geoffspear
這不是一個「預分析」。這是*編譯*! Java在編譯時解析綁定,而python在運行時執行。在python中,你可以在運行時創建變量,因此它*不可* *可靠*在給定的程序中的特定時間點判斷給定的變量是否存在。像'pylint'這樣的工具可以在大多數情況下工作,但在更復雜的情況下可能會失敗(尤其是在高度動態的代碼中)。按照他們的方式:你應該進行單元測試,即測試代碼的單個*部分*(這將在不到15分鐘的時間內顯示這個錯誤)。 – Bakuriu
[有沒有用於Python的靜態分析工具?](http://stackoverflow.com/questions/35470/are-there-any-static-analysis-tools-for-python) – Bakuriu