python中的赋值语句,在python中,赋值语句规则
python中有两种相关类型的赋值语句:实体和名称。
赋值语句也可以有两种形式:
名称=实体
名称1=名称2
我们创建的实体保存在内存中。和声明
名称=实体
名称被绑定到实体。这意味着您可以使用名称来访问实体并对其进行操作。
请遵守以下代码:
a=[1,2,3]
b=a
c=b
打印( {} {} {} )。格式(a、b、c))
b[0]=3
打印( {} {} {} )。格式(a、b、c))
代码输出的结果是什么?
[1, 2, 3] [1, 2, 3] [1, 2, 3]
[3, 2, 3] [3, 2, 3] [3, 2, 3]
如你所见,三个变量A、B和C被修改了。
分别看下面两段代码和对应的输出:
a=[1,2,3]
b=a
c=b
打印( {} {} {} )。格式(a、b、c))
a=[4,5,6]
打印( {} {} {} )。格式(a、b、c))
[1, 2, 3] [1, 2, 3] [1, 2, 3]
[4, 5, 6] [1, 2, 3] [1, 2, 3]
a=123
b=a
c=b
打印( {} {} {} )。格式(a、b、c))
a=1
打印( {} {} {} )。格式(a、b、c))
123 123 123
124 123 123
当我们修改变量A时,只有变量A是真正被修改的。
为什么会有这两种不同?这是因为我们用不同的方式修改变量A。
第一种情况,我们通过name: A访问了内存中的实体:[1,2,3]我们直接改变了内存中的实体,而A,B,C的绑定关系没有改变,仍然指向实体。
第二种情况,无论a=[4,5,6]还是a=1(实际上是a=a 1),在内存中创建一个新实体,然后将变量名A绑定到这个新实体上。原实体只有B,C与之绑定。所以调用B和C会得到原来的实体,而调用A不会。
这经常发生在列表元素的使用中。因为列表元素存储在内存中,并且部分是可变的。与其他元素相比,数字类型的改变需要全新的赋值,而字符串类型不允许部分改变。
注意列表的方法
name.copy()
这将在内存中创建一个新的列表,尽管内容与之前完全相同。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。