栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么多个分配和单个分配在python中表现不同

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么多个分配和单个分配在python中表现不同

Python中的变量是引用或名称,不像C中的变量等。

这段代码:

x=y=Queue()

表示“允许名称

y
引用通过调用在内存中创建的对象
Queue()
,并允许该名称
x
引用
y
指向的对象。” 这意味着两个变量都指向同一个对象-
您可以使用进行验证
id(x) == id(y)

这段代码:

x=Queue()y=Queue()

表示“允许名称

x
引用由制成的一个对象
Queue()
,并允许名称
y
引用由制成的另一个对象
Queue()
”。在这种情况下,
id(x) ==id(y)
False

这通常会咬你:

a = [1,2,3,4,5]b = ab.append(6)print(a)# [1,2,3,4,5,6] even though we didn't seem to do anything to a!

要解决此问题,请

import copy; b = a.copy();
改为执行
b = a

但是,这种行为不会发生在像整数这样的不可变对象上:

a = 7a += 1

不会 转到

a
引用的对象并通过添加一个对象来更改它,而是
a
从对象7取消引用,并将其引用到表示
a
+
1(即8)的先前值的对象。这与对可变对象执行的操作不同,就像上一个示例中的列表 一样 -追加到列表 确实会 更改变量所引用的对象。

因此,我们可以这样做:

a = 7b = aa += 1print(a)# 8print(b)# 7


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668496.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号