Python变量在很大程度上是很容易理解的,但是有一种情况我一直在挣扎。如果我想将变量指向一个新的内存地址,我如何做到这一点?或者,如果Python默认这样做(将变量视为指针),那么如何将新变量的值分配给旧变量的内存地址?
例如,如果我键入
a=1
b=2
c=a
c=b
c
的价值是什么?它指的是什么?语句是用指针c -> a
替换指针c -> b
,还是从b
获取值并用b
的值覆盖a
?c=b
是不明确的。
换句话说,如果您从以下内容开始:
a -> 1 <- c
b -> 2
是这样重新指向c
的吗:
a -> 1 _c
b -> 2 <-/
还是像这样复制b
?
a -> 2 <- c
b -> 2
发布于 2018-10-06 22:24:17
嗯,在你的代码中:
a=1
b=2
c=a
c=b
在将c
分配给b
的值之前,在将c
分配给a
的值之前,c
将是a
。
然后,在代码的末尾,c
将是b
,因为您要重新分配变量。
第二个赋值,基本上是创建新变量,而不知道变量已经存在,所以它只会这样做,但无法访问变量的先前持有值。
发布于 2018-10-06 22:28:55
c
没有“指向a
或b
”.它指向1
或2
对象。
>>> a = 1
>>> b = 2
>>> c = a
>>> c
1
>>> c = b
>>> c
2
>>> b = 3
>>> c
2
id()
- b
和c
点在同一“事物”上可以证明这一点:
>>> b = 2
>>> c = b
>>> id(b)
42766656
>>> id(c)
42766656
发布于 2018-10-06 22:35:37
同时回答您的两个问题,,c? 的值是什么?,我用每个变量的id()
添加了一步一步的执行,并给出了适当的注释。希望这能帮助你正确理解引擎盖下发生的事情。
>>> a=1
>>> b=2
>>> print(id(a))
1574071312 # this is the address of a
>>> print(id(b))
1574071344 # this is the address of b
>>>c=a # assignment of a to c
>>> print(c)
1 # c will contain now the value of a
>>> print(id(c))
1574071312 # this is the address of c which is same as a
>>> c=b # re-assignment of b to c
>>> print(c)
2 # c wil contain now the value of b
>>> print(id(c))
1574071344 # this the address of c now which is same as b
https://stackoverflow.com/questions/52685928
复制相似问题