在Python 中使用預設參數時,必須注意早期綁定行為,這可能會導致意外結果,特別是對於可變的預設參數。本文解決了這個問題,並提供了一個解決方案來建立一個始終使用新的空列表作為預設參數的函數。
考慮以下內容function:
def my_func(working_list=[]): working_list.append("a") print(working_list)
當第一次在沒有明確參數的情況下呼叫此函數時,Python 將建立一個新的空列表作為預設值對於工作清單。但是,沒有明確參數的後續呼叫將使用在初始呼叫期間建立的相同列表,從而導致列表的累積更新。
至為了避免這種行為,建議的方法是使用 None 作為預設參數並在函數體內明確測試它。這可以透過以下方式實現:
def my_func(working_list=None): if working_list is None: working_list = [] # alternative: # working_list = [] if working_list is None else working_list working_list.append("a") print(working_list)
透過將預設參數設為 None,每次呼叫函數時都會建立一個新的空列表,而無需明確參數。
其他注意事項
Python 文件建議使用 is None 與 None 進行比較。這是根據 PEP 8 的首選樣式,它建議不要使用相等運算符(== 和 !=)來與 None 等單例進行比較。
以上是如何避免 Python 中可變預設參數的意外行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!