2013-02-22 40 views
7

假設我正在處理'requests'python庫。Pycharm:代碼完成沒有給出建議

req = requests.get("http://google.com") 

現在在此之後,如果我鍵入req.,我應該得到的,我可以訪問所有方法的列表。但由於某種原因,我沒有,即使我手動按下ctrl空間。

如果我在ipython中試試這個,我會得到自動完成的建議。即使我通過pycharm中的內置python控制檯來嘗試它,我也會得到一些建議。

這是怎麼回事?

回答

15

由於Python是一種動態類型語言,因此您需要確保它能夠計算出什麼類型的東西,並正確檢查系統上的庫。試着確定它很明顯是什麼類型的對象是在你的代碼。最近添加的一個好方法(2.7)是啓用運行時類型檢測 - PyCharm在運行時(在調試時)掛鉤到程序中,並檢查變量使用的類型。

您可以通過轉到首選項,然後選擇「Python調試器」並選擇「收集運行時類型信息以獲取代碼洞察」來啓用該功能。

Preferences screen of PyCharm

您也可以通過使用包含有關參數和返回值類型的信息epydoc的或獅身人面像的風格文檔字符串「告訴」 PyCharm。 PyCharm將使用這些來改善它的檢查。

6

Python是一種動態類型語言,這意味着「get」函數不會聲明它的返回類型。在IPython或PyCharm控制檯中輸入代碼時,代碼實際上正在執行,並且可以在正在運行的解釋器中檢查對象實例並獲取其方法列表。當你在PyCharm或任何其他Python IDE中輸入代碼時,它不會被執行,只能使用靜態分析來推斷方法的返回類型。這在所有情況下都是不可能的。