0
哪種編碼風格是更好/正確和爲什麼? 藉助各功能斷言聲明:檢查是否函數調用正確的參數
def fun_bottom(arg):
assert isinstance(arg, int)
#blah blah
def fun_middle(arg):
assert isinstance(arg, int)
fun_bottom(arg)
#blah blah
def fun_top(arg):
assert isinstance(arg, int)
fun_middle(arg)
#blah blah
或者,因爲我們知道,arg的類型是fun_bottom功能檢查,只是省略fun_middle和fun_top斷言?或者也許有另一種解決方案?
編輯#1
哎喲,我被誤解了。我只是以assert isinstance(arg,int)爲例。我重寫了一個問題:
使用哪一個:
選項1: 檢查參數實現每個函數功能的要求:
def fun_bottom(arg):
assert arg > 0
#blah blah
def fun_middle(arg):
assert arg > 0
fun_bottom(arg)
#blah blah
def fun_top(arg):
assert arg > 0
fun_middle(arg)
#blah blah
選項2:因爲我們知道這樣的說法是在最底層的功能被檢查,我們不主張在中等及頂級功能:
def fun_bottom(arg):
assert arg > 0
#blah blah
def fun_middle(arg):
fun_bottom(arg)
#blah blah
def fun_top(arg):
fun_middle(arg)
#blah blah
不要在任何地方聲明類型。學習愛鴨子打字,並依靠您期望定義的方法。 – agf
爲什麼你認爲你需要堅持這一點?如果您想編寫只接受已聲明參數類型的函數,請使用靜態類型語言(如Java)。否則,按照寫入Python的方式編寫Python。 –
你需要使用鴨子打字。在「try/except」中標準化輸入,然後做任何你需要的操作。 –