08.Python之对变量的再认识

    科技2025-10-05  11

    配套视频教程

    本文B站配套视频教程

    变量引用

    人们经常使用“变量是盒子”这样的比喻,但是这有碍于理解面向对象语言中的引用式变量。Python 变量类似于 Java 中的引用式变量,因此最好把它们理解为附加在对象上的标注或便签。

    在示例中所示的交互式控制台中,无法使用“变量是盒子”做解释。示意图说明了在 Python 中为什么不能使用盒子比喻,而便签则指出了变量的正确工作方式。

    示例 变量 a 和 b 引用同一个列表,而不是那个列表的副本

    >>> a = [1, 2, 3] >>> b = a >>> a.append(4) >>> b [1, 2, 3, 4]

    如果把变量想象为盒子,那么无法解释 Python 中的赋值;应该把变量视作便利贴,这样示例中的行为就好解释了

    刚刚我们说明了两个变量引用同一个数据的情况,再看一种情况:一个变量先后引用不同的数据

    定义一个整数变量 a,并且赋值为 1 代码图示a = 1 将变量 a 赋值为 2 代码图示a = 2 定义一个整数变量 b,并且将变量 a 的值赋值给 b 代码图示b = a

    变量 b 是第 2 个贴在数字 2 上的标签

    如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用

    变量 不再 对之前的数据引用变量 改为 对新赋值的数据引用

    再看一看字典的例子:

    >>> charles = {'name': 'Charles L. Dodgson', 'born': 1832} >>> lewis = charles >>> lewis is charles True >>> id(charles), id(lewis) (4300473992, 4300473992) >>> lewis['balance'] = 950 >>> charles {'name': 'Charles L. Dodgson', 'balance': 950, 'born': 1832} >>> alex = {'name': 'Charles L. Dodgson', 'born': 1832, 'balance': 950} >>> alex == charles True >>> alex is not charles True

    charles 和 lewis 绑定同一个对象,alex 绑定另一个具有相同内容的对象

    Processed: 0.008, SQL: 8