2013-07-12 63 views
1

到目前爲止Python編程中最令人沮喪的事情之一是缺乏某種「預分析」。例如,在Java中,在實際編譯程序之前執行預分析,在該程序中檢查諸如姓名使用之類的事情。換句話說,如果我在一個區域中調用變量list_one,並且說我在另一個區域將它拼錯爲list_on,Java會說「嘿,你不能這樣做,我不知道list_on是什麼。」有沒有辦法預先命名衝突的Python程序?

Python似乎沒有這樣做,這是非常令人沮喪的!我有一個程序,大約需要15分鐘跑,而我是最後一件事14.5分鐘,看進去是像

NameError: name 'list_on' is not defined

難道他們的任何可用的工具都可以在那裏可以進行這種在解釋器實際運行程序之前檢查?如果沒有,有什麼辦法解決這個問題?

+4

試過'pylint'? – geoffspear

+1

這不是一個「預分析」。這是*編譯*! Java在編譯時解析綁定,而python在運行時執行。在python中,你可以在運行時創建變量,因此它*不可* *可靠*在給定的程序中的特定時間點判斷給定的變量是否存在。像'pylint'這樣的工具可以在大多數情況下工作,但在更復雜的情況下可能會失敗(尤其是在高度動態的代碼中)。按照他們的方式:你應該進行單元測試,即測試代碼的單個*部分*(這將在不到15分鐘的時間內顯示這個錯誤)。 – Bakuriu

+0

[有沒有用於Python的靜態分析工具?](http://stackoverflow.com/questions/35470/are-there-any-static-analysis-tools-for-python) – Bakuriu

回答

2

你有沒有考慮用類似pyflakespylint的東西來檢查你的代碼?

0

UPDATE

我發現了一個奇妙的解決了這個問題對於那些碰巧是emacs用戶。您可以安裝PyFlakes-Flymake。這是一個偉大的工具!它將對您的代碼進行靜態分析,並以紅色突出顯示故障區域。我建議使用PIP而不是建議的easy_install。除此之外,啓動並運行起來非常簡單。非常值得努力!

相關問題