![](/img/trans.png)
[英]Python Tools for Visual Studio - tell the IDE what type a parameter will be
[英]Python: tell my IDE what type an object is
當我用 Python (v2.7) 編寫函數時,我經常會想到其中一個參數的類型。 我在運動中使用了令人難以置信的出色pandas
庫,所以我的論點通常“打算”是pandas.DataFrame
s。
在我最喜歡的 IDE (Spyder) 中,當您鍵入句點.
出現方法列表。 此外,當您鍵入方法的左括號時,文檔字符串會出現在一個小窗口中。
但是要使這些事情起作用,IDE 必須知道變量是什么類型。 但當然,它永遠不會。 我是否遺漏了一些關於如何編寫 Pythonic 代碼的明顯內容(我已經閱讀了Python Is Not Java,但它沒有提到這個 IDE 自動完成問題。
有什么想法嗎?
我不知道它是否適用於 Spyder,但許多完成引擎(例如 Jedi)也支持斷言來告訴他們變量是什么類型。 例如:
def foo(param):
assert isinstance(param, str)
# now param will be considered a str
param.|capitalize
center
count
decode
...
實際上我使用IntelliJ 想法(又名 pyCharm ) ,它們提供了多種方法來指定變量類型:
1. 指定簡單變量
很簡單:只需在定義后面添加帶有類型信息的注釋即可。 Pycharm 即日起支持自動補全! 例如:
def route():
json = request.get_json() # type: dict
來源: https : //www.jetbrains.com/help/pycharm/type-hinting-in-pycharm.html
2. 指定參數:
在方法開頭后添加三個引號,這個想法將自動完成一個文檔字符串,如下例所示:
來源: https : //www.jetbrains.com/help/pycharm/using-docstrings-to-specify-types.html
(目前在我的手機上,稍后會制作)
如果您使用的是 Python 3,則可以使用函數注釋。 舉個例子:
@typechecked
def greet(name: str, age: int) -> str:
print("Hello {0}, you are {1} years old".format(name, age))
我不使用 Spyder,但我認為它有一種方法可以讀取注釋並采取適當的行動。
我不知道 Spyder 是否讀取文檔字符串,但 PyDev 會:
http://pydev.org/manual_adv_type_hints.html
所以你可以在文檔字符串中記錄預期的類型,例如:
def test(arg):
'type arg: str'
arg.<hit tab>
你會得到相應的字符串選項卡完成。
同樣,您可以記錄函數的返回類型,以便您可以在foo
為foo = someFunction()
獲得制表符foo = someFunction()
。
同時,文檔字符串使自動生成的文檔更有幫助。
問題在於 Python 的動態特性,我使用 Spyder,並且我使用了更多的 Python IDE(PyCharm、IDLE、WingIDE、PyDev 等),並且所有這些都存在您在此處所述的問題。 因此,當我需要代碼完成以尋求幫助時,我只需將變量實例化為我想要的類型,然后鍵入“.”,例如:假設您知道您的 var df
將是DataFrame
代碼中的DataFrame
,您可以執行此df = DataFrame()
並且現在代碼完成應該對您df = DataFrame()
,只是不要忘記在完成代碼編輯后刪除(或注釋) df = DataFrame()
行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.