Python 爬阶梯 | Python函数中参数的传递机制到到底是怎么样的?
我先写两段代码给你看看:
1、

2、

看出它两的区别了么?
第一段代码,a = 2,然后把 a 作为参数传给 foo 函数,函数中的 arg += 1,不过当我们调用完 foo 函数之后, a 的值没有变,还是等于 2。
而第二段代码类似,只不过我们把参数从整数换位列表,不过当我们和第一段代码一样执行的时候,输出的结果是 a 的值变了,从 [1,2,3] 变成了 [1,2,3,6]。
这是为什么呢?
还记得我之前跟你说
本文隐藏内容 登陆 后才可以浏览
值得注意的一点是,可变类型进行 += 操作的时候,是会创建新的空间的,比如:
[1,2,3] + [4],实际上是这样的:

所以当像以下这样去进行函数操作的时候,可变类型变量的值也是不会改变的:

ok,以上就是Python函数中参数的传递机制,不用去死记硬背,了解其中的原理,你就会很容易的明白这种参数传递方式。
大帅b,“会创建新的地址,而像列表,字典这样不可变类型的数据”,原文中这里的“不可变类型”应该是“可变类型”
谢谢提醒,已经更正!
这个网址pythontutor.com可以逐步看到代码执行顺序,挺好的。