在Python 3,你可以添加說明,以你的函數參數:是否在Python 3中結合了參數描述和類型提示?
def foo(host: 'ip address for connection')
cool_stuff()
,你還可以提供以後可以用mypy
檢查預期的類型:
def foo(host: str)
cool_stuff()
兩者都是非常有用的我眼睛 - 有沒有辦法將兩者結合起來,仍然可以讓mypy
檢查一致性?
在Python 3,你可以添加說明,以你的函數參數:是否在Python 3中結合了參數描述和類型提示?
def foo(host: 'ip address for connection')
cool_stuff()
,你還可以提供以後可以用mypy
檢查預期的類型:
def foo(host: str)
cool_stuff()
兩者都是非常有用的我眼睛 - 有沒有辦法將兩者結合起來,仍然可以讓mypy
檢查一致性?
不,這部分是爲什麼PEP 484
被寫入,以提供明確和唯一使用函數註釋,類型提示。
具體地在,它指出:
說法一行指出PEP 3107明確支持在功能註解使用任意表達式。然後新的提議被認爲與PEP 3107的規範不兼容。
,並繼續說:
我們希望這種類型的提示將最終成爲註釋單獨使用,但是這將需要更多的討論和初始轉出後棄用期Python中的打字模塊。
替代品,其中指定這兩個被認爲是,但顯然拒絕由於代碼的可讀性下降:
儘管所有這些選項,提案已送交允許類型提示以及其他形式的註解共存的個人論點。一個提議表明,如果給定參數的註釋是字典文字,則每個鍵代表不同的註釋形式,並且密鑰
'type'
將用於提示類型。 這個想法及其變體的問題是,符號變得非常「嘈雜」,難以閱讀。
允許兩者都可以擊敗這個PEP並且使用註釋片段。最後,最好的選擇是使用良好的ol'docstrings來記錄參數,並堅持使用函數註釋僅用於類型提示。