首頁 > 後端開發 > Python教學 > 如何避免 Python 中可變預設參數的意外行為?

如何避免 Python 中可變預設參數的意外行為?

DDD
發布: 2024-12-10 15:03:10
原創
670 人瀏覽過

How Can I Avoid Unexpected Behavior with Mutable Default Arguments in Python?

避免Python 早期綁定中的預設參數陷阱

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板