理解Python中的引用

2024-04-27 03:35:23 发布

您现在位置:Python中文网/ 问答频道 /正文

以下示例:

a = 1
b = a
b = 3
print(a) # gives 1

但是,当我这么做的时候:

a = [1,2]
b = a
b[0] = 3
print(a) # gives [3,2]
如何知道变量是否被处理为(C++类型)引用或普通变量?基本数据类型只是“一切都是引用”规则的例外吗?我遗漏了什么细节?你知道吗


Tags: 示例类型规则细节数据类型printgives遗漏
3条回答

每个名字都是一个简单的参考。你知道吗

变量名是对对象的引用,重要的是对象的属性。规则:数字(int、float等)、字符串、元组(以及其他)是不可变的只读。列表、字典、集合(和其他)是可变的。你知道吗

所以你观察到的区别是因为int是不可变的-它们不能改变。然而列表是可变的-它们可以改变。你知道吗

在这两种情况下分配a = b会复制引用。当您重新分配b时会发生这种情况,在本例中,一个新对象被左侧引用。对于可变对象,引用的对象会发生更改,使用哪个引用也无关紧要。你知道吗

Python中的所有变量都是引用。基本数据类型也不例外。你知道吗

在第一个示例中,您重新分配了b。它不再引用与a相同的对象。你知道吗

在第二个示例中,您修改了b。由于您之前已将ab设置为对同一对象的引用,因此修改也适用于a。你知道吗

为了更好地理解这类问题,我建议您使用在线Python教程。这是一个非常方便的工具,可以在代码一步一步地执行时呈现内存中对象的图形表示。你知道吗

为了展示在线Python教程的实际效果,我将一个玩具示例分成了几个小片段,然后捕获了相应的屏幕截图。希望这能帮助您了解Python引用是如何工作的。你知道吗

a = 1
b = a

Step 1

b = 2

Step 2

x = [a, b]
y = x

Step 3

y[1] = 3

Step 4

如果您想使用此代码,请遵循this link。你知道吗

相关问题 更多 >