2024-04-27 03:35:23 发布
网友
以下示例:
a = 1 b = a b = 3 print(a) # gives 1
但是,当我这么做的时候:
a = [1,2] b = a b[0] = 3 print(a) # gives [3,2]
每个名字都是一个简单的参考。你知道吗
变量名是对对象的引用,重要的是对象的属性。规则:数字(int、float等)、字符串、元组(以及其他)是不可变的只读。列表、字典、集合(和其他)是可变的。你知道吗
所以你观察到的区别是因为int是不可变的-它们不能改变。然而列表是可变的-它们可以改变。你知道吗
在这两种情况下分配a = b会复制引用。当您重新分配b时会发生这种情况,在本例中,一个新对象被左侧引用。对于可变对象,引用的对象会发生更改,使用哪个引用也无关紧要。你知道吗
a = b
b
Python中的所有变量都是引用。基本数据类型也不例外。你知道吗
在第一个示例中,您重新分配了b。它不再引用与a相同的对象。你知道吗
a
在第二个示例中,您修改了b。由于您之前已将a和b设置为对同一对象的引用,因此修改也适用于a。你知道吗
为了更好地理解这类问题,我建议您使用在线Python教程。这是一个非常方便的工具,可以在代码一步一步地执行时呈现内存中对象的图形表示。你知道吗
为了展示在线Python教程的实际效果,我将一个玩具示例分成了几个小片段,然后捕获了相应的屏幕截图。希望这能帮助您了解Python引用是如何工作的。你知道吗
a = 1 b = a
b = 2
x = [a, b] y = x
y[1] = 3
如果您想使用此代码,请遵循this link。你知道吗
每个名字都是一个简单的参考。你知道吗
变量名是对对象的引用,重要的是对象的属性。规则:数字(int、float等)、字符串、元组(以及其他)是不可变的只读。列表、字典、集合(和其他)是可变的。你知道吗
所以你观察到的区别是因为int是不可变的-它们不能改变。然而列表是可变的-它们可以改变。你知道吗
在这两种情况下分配
a = b
会复制引用。当您重新分配b
时会发生这种情况,在本例中,一个新对象被左侧引用。对于可变对象,引用的对象会发生更改,使用哪个引用也无关紧要。你知道吗Python中的所有变量都是引用。基本数据类型也不例外。你知道吗
在第一个示例中,您重新分配了
b
。它不再引用与a
相同的对象。你知道吗在第二个示例中,您修改了
b
。由于您之前已将a
和b
设置为对同一对象的引用,因此修改也适用于a
。你知道吗为了更好地理解这类问题,我建议您使用在线Python教程。这是一个非常方便的工具,可以在代码一步一步地执行时呈现内存中对象的图形表示。你知道吗
为了展示在线Python教程的实际效果,我将一个玩具示例分成了几个小片段,然后捕获了相应的屏幕截图。希望这能帮助您了解Python引用是如何工作的。你知道吗
如果您想使用此代码,请遵循this link。你知道吗
相关问题 更多 >
编程相关推荐