python 字典的引用

Python09

python 字典的引用,第1张

python中把一个字典的value赋值变量,修改变量,被引用是字典的value也会被修改。

值的注意的是,字典里的Key和Value都是对象的引用,不是对象本身。引用没有变,变得只是引用地址空间的值。

实测该情况,对于value为字典或者列表的引用赋值,之后修改后,原有字典的value被修改。

猜测字典,列表,集合引用的是地址空间里的值,这些数据类型会被修改。

给你介绍Python中普通引用和共享引用在引用对象中需要注意的点:

普通引用:

Python中,变量的作用仅仅是一个标识,只有赋值后才被创建,它可以引用任何类型的对象,而且在引用之前必须赋值。赋值后的变量指向响应的对象,拥有该对象的空间。类型属于对象,但是不是变量。

[python]

view

plain

copy

a

=

3

a

=

"science"

上述代码说明数值3和字符串“science”分别是两种对象,初始变量a赋值对象3被创建,变量a指向对象3的内存空间,之后变量a又指向了字符串的内存空间。

共享引用:

[python]

view

plain

copy

a

=

3

b

=

a

上述代码说明变量a,b同时引用了对象3,两个变量引用了相同的对象。正是因为两者都是指向了相同的对象,所以当其中一个变量引用其他对象的时候,不会对另一个变量造成影响。例如:

[python]

view

plain

copy

a

=

“science”

在上面代码的基础上,变量a引用了字符串对象“science”,此时变量b依旧引用对象3,而不是“science”。

但是有些对象的操作会在原处修改,例如列表。例如:

[python]

view

plain

copy

a

=

[1,2,3]

b

=

a

变量a,b应用了包含1,2,3对象的列表,自然而然的a[0]引用对象1,如果在变量a中执行操作

[python]

view

plain

copy

a[0]

=

4

那么变量b就变随之变为[4,2,3]。避免这种情况可以使用copy操作,替换引用操作。