python函数定义默认参数必须指向不可变对象

python学习网 2017-12-05 15:19:02

为何说python函数定义默认参数必须指向不可变对象?

以下是个人的理解,如有不对的地方,欢迎讨论

原因分析:函数在定义时就分配了函数和默认参数L所指向对象的内存空间。

     1. 如果L指向的是可变对象,函数中更新这个可变对象,那么在多次调用函数,更新的都是函数定义时创建的可变对象,

     这个可变对象不会随着函数调用结束而销毁,因为函数定义还存在。

     

     2. 如果L指向的是不可变对象,函数中同样更新了L,此时L指向了新创建对象的内存空间,而函数定义时的不可变对象

     并没有变。函数调用结束时,新创建对象的内存空间会销毁。因为它是在函数调用时才创建的。

     

阅读(744) 评论(0)