[color=rgba(0, 0, 0, 0.56)]在python一切皆是对象,而对象是通过引用传递的。在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用赋值给变量,所以会有如下情况 [color=rgba(0, 0, 0, 0.56)]>>> a=345
>>> b = a
>>> a is b
True [color=rgba(0, 0, 0, 0.56)]--------------------------------------------------------------------------------------------------------------------------------- [color=rgba(0, 0, 0, 0.56)]创建了两个不同的对象,虽然值相同 [color=rgba(0, 0, 0, 0.56)]>>> a = 999
>>> b = 999
>>> id(a)
49335248
>>> id(b)
49335360 [color=rgba(0, 0, 0, 0.56)]------------------------------------------------------------------------------------------------------------------------------------ [color=rgba(0, 0, 0, 0.56)]但有一个特例,对于小整数[-5, 256]。考虑到小整数可能频繁使用,出于性能考虑,Python使用小整数对象缓冲池缓存了[-5, 256]之间的整数,该范围内的整数在Python系统中是共享的。 [color=rgba(0, 0, 0, 0.56)]>>> x = 256
>>> y = 256
>>> id(x)
1391325952
>>> id(y)
1391325952
[color=rgba(0, 0, 0, 0.56)]>>> x = -5
>>> y = -5
>>> id(x)
1391321776
>>> id(y)
1391321776 [color=rgba(0, 0, 0, 0.56)]所以是同一个对象
[color=rgba(0, 0, 0, 0.56)]元组属于复合数据类型,不适合缓冲池,所以你里面一个元素python会当作普通的整数来处理,当然它其实还是一个元组,只不过python的处理机制是那样而已; [color=rgba(0, 0, 0, 0.56)]至于python数据处理的机制,会涉及较多的内存细节等概念,如果不是特别清楚,或者比较迷茫,建议同学要学会探索哦,本身程序设计就需要一种持续探索和创新的思维,鉴于语言机制等有些涉及到底层的东西比较陌生,那么我们就首先掌握好大众的,普遍的,对于特殊处理的,可以通过自己查阅相关资料,总结得出结果
|