python函數定義預設參數必須指向不可變對象

來源:互聯網
上載者:User

標籤:分析   結束   blog   不可變對象   images   ima   es2017   可變   可變對象   

為何說python函數定義預設參數必須指向不可變對象?

以下是個人的理解,如有不對的地方,歡迎討論

原因分析:函數在定義時就分配了函數和預設參數L所指向對象的記憶體空間。

     1. 如果L指向的是可變對象,函數中更新這個可變對象,那麼在多次調用函數,更新的都是函數定義時建立的可變對象,

     這個可變對象不會隨著函數調用結束而銷毀,因為函數定義還存在。

     

     2. 如果L指向的是不可變對象,函數中同樣更新了L,此時L指向了新建立對象的記憶體空間,而函數定義時的不可變對象

     並沒有變。函數調用結束時,新建立對象的記憶體空間會銷毀。因為它是在函數調用時才建立的。

     

python函數定義預設參數必須指向不可變對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.