python共享引用(多个变量引用)示例代码

yipeiwu_com6年前Python基础

复制代码 代码如下:

a = 3
b = a

先上图(图1)吧,大家一看就一目了然了:


变量名和对象,在运行赋值语句b = a之后,变量a,b都指向了对象3的内存空间.
假设这时执行 a = 'python', a将指向刚创建的字符串对象。
我们再来试试这种情况:

复制代码 代码如下:

>>>list_1 = [1,2,3,4]
>>>list_2 = list_1
>>>list_2
>>>list_1[0] = 'python'
>>>list_2

result:

复制代码 代码如下:

[1,2,3,4]
['python',2,3,4]


从我的理解上来解释的话: list是一个类型对象,而对象里的每一个元素可以看成是变量,去引用了不同内存空间的对象list_1 = [1,2,3,4]是让list_1指向list的内存空间,list_2 = list_1时,他们将指向同一个内存空间。当List_1[0]改变指向时,list_2依然指向list对象的,所以看是改变list_1[0]的值,实际上是python通过list_1直接到内存空间去做了修改,list_2的指向没有任何变量。
或许这种结果并不是我们想要的。如果你不想要这样的现象发生,需要python对象拷贝,而不是创建引用。
如:


相关文章

Python使用re模块实现信息筛选的方法

本文实例讲述了Python使用re模块实现信息筛选的方法。分享给大家供大家参考,具体如下: 背景 平时工作中,我们经常会处理大量的元数据(Raw Data),而一般的文件编辑器只能一次查...

Python 控制终端输出文字的实例

如下所示: class bcolors: HEADER = '\033[95m' OKBLUE = '\033[94m' OKGREEN = '\033[9...

儿童python练习实例

实例一: 题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满...

python实现在函数中修改变量值的方法

和其他语言不一样,传递参数的时候,python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。 实际上,这种方式相当于传值和传引用的一种综合。如...

python生成随机红包的实例写法

假设红包金额为money,数量是num,并且红包金额money>=num*0.01 原理如下,从1~money*100的数的集合中,随机抽取num-1个数,然后对这些数进行排序,在...