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

发布于 2021-01-29 19:03:24

这是我学习python的第二天(我了解C ++和一些OOP的基础知识),并且我对python中的变量有些困惑。

这是我目前对它们的了解:

Python变量是对对象(可变或不可变)的引用(或指针?)。当我们有类似的内容时num = 5,不可变对象5将在内存中的某个位置创建,而名称-
对象引用对num将在某个命名空间中创建。当我们拥有时a = num,不会复制任何内容,但是现在两个变量都引用相同的对象,a并被添加到相同的名称空间。

这就是我的书《 用Python自动处理无聊的东西》 ,令我感到困惑。由于它是一本新手书籍,因此没有提及对象,名称空间等,而是尝试解释以下代码:

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

它提供的解释与C
++书籍的解释完全相同,由于我们正在处理对象的引用/指针,对此我并不满意。因此,在这种情况下,我想在第三行中,由于整数是不可变的,spam因此正在为内存中的其他位置分配一个全新的指针/引用,即,它最初指向的内存没有被修改。因此,我们已经cheese提到了由引用的初始对象spam。这是正确的解释吗?

关注者
0
被浏览
86
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    作为C ++开发人员,您可以将Python变量视为指针。

    因此,在编写时spam = 100,这意味着您“分配了指针”(以前指向该对象42)以指向该对象100

    较早时,cheese被分配指向与所指对象相同的对象spam,该对象恰好42在那时。由于您尚未修改cheese,因此仍指向42

    在这种情况下,不变性与它无关,因为指针分配不会更改所指向对象的任何内容。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看