Python的变量、常量与不可变对象


变量

In [17]: a = 'ABC'
In [18]: b = a

In [19]: a
Out[19]: 'ABC'

In [20]: b
Out[20]: 'ABC'

python解释器会做:

  • 在内存中创建了一个'ABC'的字符串
  • 在内存中创建了一个名为a的变量,并把他指向'ABC'
  • 当把a赋值给b时,实际上是创建b变量,并让b指向a所指向的数据

不可变对象

In [47]: a = 'abc'

In [48]: a.replace('a', 'A')
Out[48]: 'Abc'

In [49]: a
Out[49]: 'abc'

In [50]: b = a.replace('a', 'A')

In [51]: b
Out[51]: 'Abc'

In [52]: a
Out[52]: 'abc'

str是不变对象,用replace()方法并没有改变'abc'的内容,而是创建了一个新的字符串"Abc",并使b指向'Abc'

常量

Python中,通常用大写的变量名表示常量。如:

PI = 3.14159265359

但是实际上PI仍然是一个变量,因为Python中并没有任何机制保证PI不会被改变,所以用全大写表示常量,也只是一个习惯的用法,但是实际上是可以改变的。