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

Python将多个变量分配给相同的值?列出行为

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

Python将多个变量分配给相同的值?列出行为

如果您要使用C / Java / etc等语言的Python。家庭,它可能会帮助您停止将其

a
视为“变量”,而开始将其视为“名称”。

a
,,
b
c
不是具有相等值的不同变量;它们是相同名称的不同名称。变量具有类型,身份,地址和类似的东西。

名称没有任何名称。 当然可以,并且对于相同的值,您可以有很多名称。

如果给

Notorious B.I.G.
热狗,*
Biggie Smalls
ChrisWallace
有一个热狗。如果将的第一个元素更改
a
为1,则
b
和的第一个元素为
c
1。

如果要知道两个名称是否在命名同一对象,请使用

is
运算符:

>>> a=b=c=[0,3,5]>>> a is bTrue

然后您问:

有什么不同呢?

d=e=f=3e=4print('f:',f)print('e:',e)

在这里,您将名称重新绑定

e
到value
4
。这并不影响名称
d
f
以任何方式。

在以前的版本中,您分配给

a[0]
,而不是
a
。因此,从的角度来看
a[0]
,您正在重新绑定
a[0]
,但是从的角度来看
a
,您正在就位更改它。

您可以使用该

id
函数,该函数为您提供代表对象身份的唯一编号,以准确查看哪个对象是哪个对象,即使在
is
无济于事的情况下:

>>> a=b=c=[0,3,5]>>> id(a)4473392520>>> id(b)4473392520>>> id(a[0])4297261120>>> id(b[0])4297261120>>> a[0] = 1>>> id(a)4473392520>>> id(b)4473392520>>> id(a[0])4297261216>>> id(b[0])4297261216

请注意,该

a[0]
名称已从4297261120更改为4297261216-现在它是另一个值的名称。并且
b[0]
现在也是该新值的名称。那是因为
a
b
仍在命名同一对象。


在幕后,

a[0]=1
实际上是在列表对象上调用方法。(等效于
a.__setitem__(0, 1)
。)因此,它 实际上
根本没有重新绑定任何内容。这就像打电话
my_object.set_something(1)
。当然,该对象可能是为了执行此方法而重新绑定实例属性,但这并不重要。重要的是您没有分配任何东西,只是在改变对象。与相同
a[0]=1


user570826询问:

如果有的话

a = b = c = 10

这与以下情况完全相同

a = b = c = [1, 2, 3]
:您有三个名称相同的值。

但是在这种情况下,值是an

int
,而
int
s是不可变的。在这两种情况下,你可以重新绑定
a
到一个不同的值(例如,
a = "Now I'm astring!"
),但不会影响原来的值,这
b
c
将仍然是名称。不同的是,有一个列表,你可以更改值
[1, 2, 3]
[1, 2, 3,4]
这样做,例如
a.append(4)
; 由于那实际上是在更改值
b
c
的名称,
b
因此现在b
[1, 2, 3,4]
。无法将值更改
10
为其他任何值。
10
永远是10,就像克劳迪娅(Claudia)一样,吸血鬼也永远是5(至少直到她被Kirsten
Dunst取代)。


*警告:请勿给臭名昭著的BIG热狗。黑帮说唱僵尸永远不要在午夜之后喂饱。



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

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

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