2016-11-17 49 views
2

在Python 3,你可以添加說明,以你的函數參數:是否在Python 3中結合了參數描述和類型提示?

def foo(host: 'ip address for connection') 
    cool_stuff() 

,你還可以提供以後可以用mypy檢查預期的類型:

def foo(host: str) 
    cool_stuff() 

兩者都是非常有用的我眼睛 - 有沒有辦法將兩者結合起來,仍然可以讓mypy檢查一致性?

回答

4

不,這部分是爲什麼PEP 484被寫入,以提供明確和唯一使用函數註釋,類型提示。

具體地在,它指出:

說法

一行指出PEP 3107明確支持在功能註解使用任意表達式。然後新的提議被認爲與PEP 3107的規範不兼容。

,並繼續說:

我們希望這種類型的提示將最終成爲註釋單獨使用,但是這將需要更多的討論和初始轉出後棄用期Python中的打字模塊。

替代品,其中指定這兩個被認爲是,但顯然拒絕由於代碼的可讀性下降:

儘管所有這些選項,提案已送交允許類型提示以及其他形式的註解共存的個人論點。一個提議表明,如果給定參數的註釋是字典文字,則每個鍵代表不同的註釋形式,並且密鑰'type'將用於提示類型。 這個想法及其變體的問題是,符號變得非常「嘈雜」,難以閱讀。

允許兩者都可以擊敗這個PEP並且使用註釋片段。最後,最好的選擇是使用良好的ol'docstrings來記錄參數,並堅持使用函數註釋僅用於類型提示。