前向宣告函數以防止「NameError」異常
Python 要求在使用函數之前先定義函數。當稍後在程式碼中定義函數時,例如使用自訂「cmp」函數對清單進行排序時,這可能會導致「NameError」異常。
為了避免此問題,可以「前向宣告」 " 定義先前的函式。這涉及將函式呼叫包裝到單獨的函式中:
def sort_list():
sorted_list = sorted(mylist, cmp=cmp_configs)
print("\n".join([str(bla) for bla in sorted_list]))
def cmp_configs(...) -> int:
...
透過在 cmp_configs 之前定義 sort_list,Python 可以「看到」前向宣告並避免 'NameError' 異常。
遞歸函數和前向宣告
在遞歸函數的情況下,一個函數的定義依賴另一個函數,在同一函數內前向宣告可能會有幫助:
def spam():
def eggs():
if end_condition():
return end_result()
else:
return spam()
if end_condition():
return end_result()
else:
return eggs()
spam()
透過在spam中前向宣告eggs,Python可以識別函數名稱並安全地執行遞歸呼叫。
結論
Forward - 透過將函數的呼叫包裝到單獨的函數中或在遞歸函數中使用內部函數來聲明函數,這提供了一種解決方法,可以在稍後在程式碼中定義函數時防止出現“NameError”異常。然而,值得注意的是,程式碼組織和避免函數之間的依賴循環始終是一個很好的做法。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3