Python中只有引用传递
在Python中,万物皆对象。Python中不存在所谓的值传递,一切传递的都是对象的引用,也可以认为是传址。
举例来说,
1 | a = 1 #将名字a与内存中值为1的内存绑定在一起 |
Python中可变对象与不可变对象
在Python中,对象分为可变(mutable)和不可变(immutable)两种类型,元组(tuple)、数值型(number)、字符串(string)均为不可变对象,而字典型(dictionary)、列表型(list)、集合(set)的对象是可变对象。
1 | a = [12, 34, 56] |
闲杂
在Python中a = b
是一次对象的引用传递,也就是此时a和b其实指向的是同一块内存地址(不管a,b是可变对象,还是不可变对象)。若a,b是可变对象的话,那么修改对象的值,例如增加一个元素,这是a和b所引用的对象都会变化。而不管a,b是不是可变对象,执行完a = b
后,然后对其中的一个变量进行了重新绑定(和修改对象的内容不一样哦),也就是说修改了变量的引用,那a和b的引用就不同了哦。
备注:感觉其实Java中的参数传递和Python是一样的,待验证。