在程式設計中,我們經常需要組織和管理函數以高效執行。一種常見的方法是將函數儲存在列表和字典等資料結構中,允許我們動態引用和呼叫它們。然而,問題出現了:我們如何在這些結構中有效地儲存和檢索函數?
例如,考慮以下方法:
<code class="python">mydict = { 'funcList1': [foo(), bar(), goo()], 'funcList2': [foo(), goo(), bar()]}</code>
此方法嘗試儲存函數的結果字典中的呼叫(即傳回值),但它不會如預期般運作。相反,我們需要一種方法來儲存實際的函數物件本身。
在 Python 中,函數是一等對象,這意味著它們可以被視為值並儲存在資料結構中。為了有效地將函數儲存在字典中,我們需要將函數物件指派給鍵,而不是它們的回傳值。例如:
<code class="python">dispatcher = {'foo': foo, 'bar': bar}</code>
其中 foo 和 bar 是函數物件。
要從該字典呼叫函數,我們只需使用其鍵來呼叫它:
<code class="python">dispatcher['foo']() # calls the foo function</code>
如果我們需要運行儲存在列表中的多個函數,我們可以使用輔助函數來迭代列表並呼叫每個函數:
<code class="python">dispatcher = {'foobar': [foo, bar], 'bazcat': [baz, cat]} def fire_all(func_list): for f in func_list: f() fire_all(dispatcher['foobar'])</code>
這種方法允許我們動態組織和呼叫函數,方便程式碼組織並減少所需的def 語句的數量。
以上是我們如何有效地儲存和檢索列表和字典等資料結構中的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!