码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-12-05 13:17:41      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:分析   结束   blog   不可变对象   images   ima   es2017   可变   可变对象   

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

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

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

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

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

     技术分享图片

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

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

     技术分享图片

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

标签:分析   结束   blog   不可变对象   images   ima   es2017   可变   可变对象   

原文地址:http://www.cnblogs.com/BluePegasus/p/7985977.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!