标签:分析 结束 blog 不可变对象 images ima es2017 可变 可变对象
为何说python函数定义默认参数必须指向不可变对象?
以下是个人的理解,如有不对的地方,欢迎讨论
原因分析:函数在定义时就分配了函数和默认参数L所指向对象的内存空间。
1. 如果L指向的是可变对象,函数中更新这个可变对象,那么在多次调用函数,更新的都是函数定义时创建的可变对象,
这个可变对象不会随着函数调用结束而销毁,因为函数定义还存在。
2. 如果L指向的是不可变对象,函数中同样更新了L,此时L指向了新创建对象的内存空间,而函数定义时的不可变对象
并没有变。函数调用结束时,新创建对象的内存空间会销毁。因为它是在函数调用时才创建的。
标签:分析 结束 blog 不可变对象 images ima es2017 可变 可变对象
原文地址:http://www.cnblogs.com/BluePegasus/p/7985977.html