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函数中参数的传递机制,不用去死记硬背,了解其中的原理,你就会很容易的明白这种参数传递方式。

3 Replies to “Python 爬阶梯 | Python函数中参数的传递机制到到底是怎么样的?”

  1. digmouse233说道:

    大帅b,“会创建新的地址,而像列表,字典这样不可变类型的数据”,原文中这里的“不可变类型”应该是“可变类型”

  2. cheung说道:

    这个网址pythontutor.com可以逐步看到代码执行顺序,挺好的。

发表回复