9
我使用新的Python 3.5模塊typing,它一直很歡樂。打字模塊 - 字符串文字類型
我想知道如何根據確切的字符串文字來指定一個類型。例如,一個函數保證返回四個字符串之一 - 「北」,「西」,「東」,「南 - 我們如何表達作爲特定類型變量,而不是僅僅str
。
我通過文件看,找到Union
類型和TypeVar
功能,但無法找到答案
表達這個問題的一個例子功能:
def compute_quadrant(x: int, y: int) -> str:
if x > 0 and y > 0:
return 'I'
elif x < 0 and y > 0:
return 'II'
elif x < 0 and y < 0:
return 'III'
elif x > 0 and y < 0:
return 'IV'
而不是僅僅返回str
,我喜歡返回一個更具體的類型,它是四個值之一 - "I"
,"II"
,"III"
或"IV"
。
在Typescript中,可以這樣做:type Quadrant = "I" | "II" | "III" | "IV"
- 這個用例中有typing
模塊有什麼好的Python糖嗎?
與打字無關,但你認爲'enum'? –
我可以問,你爲什麼需要這樣的東西?因爲類型註釋是爲查看代碼的文本編輯器和程序員製作的。如果你可以限制函數可能返回的元素的範圍,那麼你絕對可以通過查看代碼來說。 –
也許這個特定的函數沒有概述用例(因爲它簡單直接),但是在編寫代碼時,我想盡可能地爲我的對等提供儘可能多的上下文。在處理數據和對對象執行復雜操作時,我希望能夠提供非常嚴格和精確的類型。此外,分析工具能夠根據類型找到優化點 - 例如永遠不會被擊中的代碼路徑或明顯的錯誤。 – fructosewizard