2016-04-29 45 views
3

我在Windows 10上使用PyCharm 2016.1和Python 2.7並導入了matplotlib模塊。PyCharm - matplotlib(和其他導入模塊)的自動完成

由於matplotlib模塊非常廣泛,我對Python相對比較陌生,我希望PyCharm中的Auto Complete功能可以幫助我獲得對象的現有屬性/函數的概述。每次通過api文檔進行挖掘都會更方便,不知道要在哪裏找到它。

例如:

from matplotlib import pyplot as plt 
fig, ax = plt.subplots() 

當我鍵入ax.有沒有北京時間自動完成的性質,職能軸等,我只得到了建議名單。

我已經嘗試過this並直接與進口軸模塊:

import matplotlib.axis as axis 

from matplotlib.axis import Axis as axis 

智能自動完成和「收集運行時類型信息」已經啓用。

有沒有一種方法可以像上面描述的那樣啓用自動完成功能,還是有另一種支持這種功能的IDE?

回答

1

我相信你的問題是在這裏強調:

https://intellij-support.jetbrains.com/hc/en-us/community/posts/205816499-Improving-collecting-run-time-type-information-for-code-insight?sort_by=votes

Tldr返回類型可能不同,因此它不能在編譯的時候想通了。

最接受的方法是使用一種暗示,因爲它只能找出鍵入它,運行時間:

import matplotlib.axes._axes as axes 

fig = plt.figure(figsize=(5,10)) 
ax1 = fig.add_subplot(3,1,1) # type:axes.Axes 
ax1.set_xlabel('Test') <- now autocompletes 

您也可以嘗試assert isinstance

import matplotlib.axes._axes as axes 

fig = plt.figure(figsize=(5,10)) 
ax1 = fig.add_subplot(3,1,1) 
assert isinstance(ax1, axes.Axes) 
ax1.set_xlabel('Test') 

它不會找到自動完成,如果你在你正在尋找的方法後:

ax1.set_xlabel('Test') 
assert isinstance(ax1, axes.Axes) 

有了這個,你不應該讓isinstance指定你的代碼的控制流,如果你試圖運行一個不存在於對象上的方法,它應該會崩潰,但是,如果你的不同對象有一個同名的方法(!),那麼你有無意中達到了目標,沒有註釋。所以我更喜歡它,因爲你希望它在早期和正確的位置崩潰。 YMMV

從DOC:

斷言應該被用來測試對可 因爲不良的用戶輸入或操作系統/環境 故障,如不是一個文件的發生故障的情況下找到。相反,您應該引發一個異常,或者打印一條錯誤消息或其他適當的東西。一個 爲什麼斷言只能用於 的自檢的一個重要原因是該程序可以在編譯時禁用斷言。

如果Python是使用-O選項啓動的,則斷言將被剝離並且不被評估。因此,如果代碼嚴重使用斷言, 但對性能至關重要,那麼有一個系統可以在發佈版本中將它們關閉 。 (但不這樣做,除非真的有必要 。

https://wiki.python.org/moin/UsingAssertionsEffectively

或者,如果你不想添加到您的代碼以這種方式,並有IPython中/ jupyter通過anoconda安裝,你可以右鍵單擊要運行的代碼並選擇「在控制檯中執行選擇」,從控制檯獲取代碼完成代碼