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

在python字典中赋值(复制与参考)

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

在python字典中赋值(复制与参考)

您在这里尝试2种不同的方法。首先是 可变性不变性 的思想。在Python, ,,有一些相比内建不可变类型的,(以及其他),其是可变的类型。
不变 对象是一旦创建就无法更改的对象。因此,在您的示例中:

str``int``tuple``list``dict
__

a = b = c = 1

该行后,所有的

a
b
c
指在内存中相同的整数(你可以打印他们的respecitve检查
id
的,并指出,它们是相同的)。但是,当您这样做时:

a += 1

a
现在,它是指位于不同存储位置的新(不同)整数。请注意,作为约定,
+=
如果类型是不可变的,则应返回某事物的新实例。如果类型是 可变的
,则应在适当位置更改对象并返回它。我将在此答案中解释一些更具体的细节。


对于第二部分,您试图弄清楚python的标识符如何工作。我认为的方式是……编写语句时:

name = something

右侧被求值为某个对象(整数,字符串等)。该对象然后在左侧1上被命名。当名称在右侧时,将自动“查找”对应的对象,并在计算中替换该名称。请注意,在此框架中,赋值并不关心之前是否有任何名字,它只是用新的值覆盖了旧的值。以前使用该名称构造的对象看不到任何变化-
也不。它们已经被创建-保留对对象本身的引用,而不是对名称的引用。所以:

a = "foo"  # `a` is the name of the string "foo" b = {"bar": a}  # evaluate the new dictionary and name it `b`.  `a` is looked up and returns "foo" in this calculationa = "bar"  # give the object "bar" the name `a` irrespecitve of what previously had that name

1为了简单起见,我在这里忽略了一些细节-例如,当您分配给list元素时会发生什么:

lst[idx] = some_value *some_other_value



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

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

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