更新一个变量的值会更新另一个变量的值

时间:2013-12-14 17:19:11

标签: python

spam = "woo"
eggs = spam
spam = "string"
print eggs
# prints woo

然而对于数组来说,它是不同的:

import numpy
# The coefficients for the Taylor polynomial for exp(x)
Taylor_coefficients = numpy.array(
[1.0, 0.5, 0.1666, 0.04164, 0.0083, 0.0014])
coeff = Taylor_coefficients
coeff[1] = 0
print Taylor_coefficients[:2]
# prints [ 1.  0.]

这里发生了什么,以及除数组之外的其他常见数据类型适用于哪些?

1 个答案:

答案 0 :(得分:-1)

这种行为差异是由于可变对象和不可变对象之间的差异。有关python类型的更多信息,请阅读wiki page

当你spam = "string"时,垃圾邮件被指向一个带有新字符串的新位置,因为字符串是不可变的(创建后无法更改),这会使eggs保持原样,指向旧的串。但是对于数组(或其他可变对象),coff = Taylor_coefficients将指向同一个对象,并且更改该对象将反映在对它的所有引用中。