值传递,引用传递 or 其他?

知识点

  • 变量的赋值,只是表示让变量指向了某个对象,并不表示拷贝对象给变量;而一个对象,可以被多个变量所指向。
a = 1
b = a
a = a + 1


  • 可变对象(列表,字典,集合等等)的改变,会影响所有指向该对象的变量。
l1 = [1, 2, 3]
l2 = l1
l1.append(4)
l1
[1, 2, 3, 4]
l2
[1, 2, 3, 4]


  • 对于不可变对象(字符串,整型,元祖等等),所有指向该对象的变量的值总是一样的,也不会改变。但是通过某些操作(+= 等等)更新不可变对象的值时,会返回一个新的对象。

  • 变量可以被删除,但是对象无法被删除。

如果想通过一个函数来改变某个变量的值,通常有两种方法。

一种是直接将可变数据类型(比如列表,字典,集合)当作参数传入,直接在其上修改;

第二种则是创建一个新变量,来保存修改后的值,然后将其返回给原变量。在实际工作中,我们更倾向于使用后者,因为其表达清晰明了,不易出错。


Jupytre Notebook File

值传递,引用传递or其他,Python里参数是如何传递的?.ipynb

最后修改:2019 年 11 月 24 日
如果觉得我的文章对你有用,请随意赞赏