当我们写:
a = 'ABC'
时,Python解释器干了两件事情:
在内存中创建了一个ABC
的字符串;
在内存中创建了一个名为a的变量,并把它指向ABC
。
也可以把一个变量a
赋值给另一个变量b
,这个操作实际上是把变量b
指向变量a
所指向的数据.
例子:
a = 'ABC'
b = a
a = 'XYZ'
print(b)
因为字符串是不可变对象,执行结果为:
ABC
可以通过id()
函数获取对象的内存地址:
>>> a = 'ABC'
>>> id(a)
4397175224
>>> b = a
>>> id(b)
4397175224
>>> a = 'XYZ'
>>> id(a)
4398715040
>>> id(b)
4397175224
>>> print(b)
ABC
我们可以看到:
总结
Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的(变量是符号表中的一个key,对应的值就是变量对应的对象的地址),对变量赋值就是把数据和变量给关联起来。
对变量赋值x = y
是把变量x
指向真正的对象,该对象是变量y
所指向的。随后对变量y
的赋值不影响变量x
的指向。