為何說python函數定義預設參數必須指向不可變對象? 以下是個人的理解,如有不對的地方,歡迎討論 原因分析:函數在定義時就分配了函數和預設參數L所指向對象的記憶體空間。 1. 如果L指向的是可變對象,函數中更新這個可變對象,那麼在多次調用函數,更新的都是函數定義時創建的可變對象, 這個可變對象不會隨 ...
為何說python函數定義預設參數必須指向不可變對象?
以下是個人的理解,如有不對的地方,歡迎討論
原因分析:函數在定義時就分配了函數和預設參數L所指向對象的記憶體空間。
1. 如果L指向的是可變對象,函數中更新這個可變對象,那麼在多次調用函數,更新的都是函數定義時創建的可變對象,
這個可變對象不會隨著函數調用結束而銷毀,因為函數定義還存在。
2. 如果L指向的是不可變對象,函數中同樣更新了L,此時L指向了新創建對象的記憶體空間,而函數定義時的不可變對象
並沒有變。函數調用結束時,新創建對象的記憶體空間會銷毀。因為它是在函數調用時才創建的。