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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python函数定义默认参数必须指向不可变对象相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

     技术分享图片

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

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

     技术分享图片

以上是关于python函数定义默认参数必须指向不可变对象的主要内容,如果未能解决你的问题,请参考以下文章

参数定义的顺序必须是:必选参数默认参数可变参数命名关键字参数和关键字参数。

python 4

python中的引用传递,可变对象,不可变对象,list注意点

python-函数及高阶函数

Python的位置参数默认参数关键字参数可变参数

python基础