在Python中将一个变量的值赋给另一个变量时会发生什么?

17 浏览
0 Comments

在Python中将一个变量的值赋给另一个变量时会发生什么?

这是我学习Python的第二天(我了解C++的基础和一些面向对象编程),关于Python中的变量,我有一些轻微的困惑。

以下是我目前的理解:

Python变量是指向对象的引用(或指针)(这些对象可以是可变的或不可变的)。当我们有类似num = 5的语句时,不可变对象5会被创建在内存的某个位置,而名称-对象引用对num会被创建在某个命名空间中。当我们有a = num时,并没有发生拷贝,现在两个变量都指向同一个对象,而a也被添加到同一个命名空间中。

这就是为什么我对《Python编程快速上手:让繁琐工作自动化》这本书感到困惑的原因。作为一本新手书籍,它没有提及对象、命名空间等,而是试图解释以下代码:

>>> spam = 42
>>> cheese = spam
>>> spam = 100
>>> spam
100
>>> cheese
42

它提供的解释与一本C++书籍完全相同,这让我不满意,因为我们在处理引用/指针指向对象。所以在这种情况下,我猜测在第3行,由于整数是不可变的,spam被赋予一个全新的指针/引用,指向内存中的不同位置,即最初它指向的内存没有被修改。因此我们有cheese指向spam最初引用的对象。这是正确的解释吗?

0