我初始化变量a
和b
。 a
的ID = 559599568,b
的ID = 559251864。
然后我在b
函数中将a
分配给change()
,期望a
指向b
的位置和{{1} } a
的价值。
但是,我发现b
确实指向a
在函数中的位置(如您所见,在函数更改内部打印时,它们都具有id = 559251864) ,但是一旦函数返回,b
指向它的原始id,即559599568。
为什么a
一旦返回指向其原始内存ID?我认为python是通过引用传递的,如果它是一个可变对象?请纠正我。
a
答案 0 :(得分:1)
是的,Python正在传递对象的引用(call by sharing)。但您的作业origin = new
也指定引用。因此,这使origin
和new
引用函数范围内的同一个对象,但不会更改函数外的任何内容。