题目:Python 中交换两个变量的值是怎么实现的?为什么可以这样实现?
答案要点:
第一个问题,在 Python 中交换两个变量的值,只需要简单一个句话即可:
重点在于为什么可以这样交换。在 《流畅的Python》一书第8章中对这个问题做了详细的解释,它解释的关键点在于:变量是标注,而不是盒子。怎么区分标注和盒子呢?如果是标注,那么一个值可以有多个标注,这些标注都代表了同一个值,修改一个会影响另外一个。而如果是盒子,代表的是独立的个体,相互之间是不受影响的。这有点类似我们在 JAVA 里说的引用对象。
正因为变量是标识,所以当我们在 Python 中定义 a = 10 的时候,实际上会开辟两块内存,一个用来存放 10,一个用来存放变量 a ,而存放变量 a 的地址所对应的值就是 10 这个地址的地址值。和 JAVA 中的引用对象是类似的。所以当我们执行 a,b = b,a 时,其实是在交互 a 和 b 的地址值
还有一个比较关键的,假设有一个类 People() ,对于 p = People() 正确的描述应该是把变量分配给对象,反过来说 有问题的,因为执行顺序是先执行 People() 再进行的赋值。示例如下:
愿关注我们的人都能找到
属于自己的皮球
领取专属 10元无门槛券
私享最新 技术干货