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

为什么整数在Python中是不可变的?

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

为什么整数在Python中是不可变的?

使整数可变是与我们惯常使用它们的方式非常违反直觉的。

考虑以下代码片段:

a = 1       # assign 1 to ab = a+2     # assign 3 to b, leave a at 1

执行完这些赋值后,我们期望 a 的值为1, b 的值为3。加法运算是根据存储在 a 中的整数和整数2的实例创建一个新的整数值。在整数 一个
,只是它的突变然后既 一个b 将具有值3。

因此,我们期望算术运算为其结果创建新值-而不会使它们的输入参数发生变异。

但是,在某些情况下,更改数据结构更方便,更有效。暂时让我们假设它

list.append(x)
没有修改,
list
但是返回了一个
list
带有
x
附加的新副本。然后是一个像这样的函数:

def foo():  nums = []  for x in range(0,10):    nums.append(x)  return nums

只会返回空列表。(请记住,这里

nums.append(x)
不会改变
nums
,它会返回一个
x
附加了新列表的列表。但是这个新列表不会保存在任何地方。)

我们将不得不这样编写

foo
例程:

def foo():  nums = []  for x in range(0,10):    nums = nums.append(x)  return nums

(实际上,这与直到大约2.6或2.5的Python字符串的情况非常相似。)

而且,每次分配时,

nums = nums.append(x)
我们都会复制一个列表,该列表的大小会增加,从而导致二次行为。由于这些原因,我们使列表成为
可变 对象。

使列表可变的结果是在这些语句之后:

a = [1,2,3]b = aa.append(4)

列表 b 已更改为

[1,2,3,4]
。这是我们共同生活的东西,尽管它仍然时不时地绊倒我们。



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

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

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