避免 Python 中的預設參數陷阱
在 Python 中,使用空列表作為預設參數可能很誘人。但是,由於預設參數的早期綁定,這可能會導致意外行為。
考慮這樣的函數:
def my_func(working_list=[]): working_list.append("a") print(working_list)
最初,預設參數如預期運作。但是,後續呼叫會繼續更新相同的列表,導致列印的列表隨著每次呼叫而增長。
為了避免這種情況,請明確測試函數體中是否存在預設參數,並在以下情況下分配一個新的空白列表:必要的:
def my_func(working_list=None): if working_list is None: working_list = [] working_list.append("a") print(working_list)
或者,您可以使用one-liner:
working_list = [] if working_list is None else working_list
旁白: PEP 8 建議使用is None 與None 等單例進行比較。避免使用 == None,因為它可能會導致錯誤的結果。
以上是在 Python 函數中使用預設參數時如何避免意外行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!