首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Python中,如果我输入a=1 b=2 c=a c=b,那么c的值是多少?C指什么?

在Python中,如果我输入a=1 b=2 c=a c=b,那么c的值是多少?C指什么?
EN

Stack Overflow用户
提问于 2018-10-07 06:12:30
回答 7查看 9.9K关注 0票数 7

Python变量在很大程度上是很容易理解的,但是有一种情况我一直在挣扎。如果我想将变量指向一个新的内存地址,我如何做到这一点?或者,如果Python默认这样做(将变量视为指针),那么如何将新变量的值分配给旧变量的内存地址?

例如,如果我键入

代码语言:javascript
代码运行次数:0
运行
复制
a=1
b=2
c=a
c=b

c的价值是什么?它指的是什么?语句是用指针c -> a替换指针c -> b,还是从b获取值并用b的值覆盖ac=b是不明确的。

换句话说,如果您从以下内容开始:

代码语言:javascript
代码运行次数:0
运行
复制
a -> 1 <- c
b -> 2

是这样重新指向c的吗:

代码语言:javascript
代码运行次数:0
运行
复制
a -> 1    _c
b -> 2 <-/

还是像这样复制b

代码语言:javascript
代码运行次数:0
运行
复制
a -> 2 <- c
b -> 2
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2018-10-07 06:24:17

嗯,在你的代码中:

代码语言:javascript
代码运行次数:0
运行
复制
a=1
b=2
c=a
c=b

在将c分配给b的值之前,在将c分配给a的值之前,c将是a

然后,在代码的末尾,c将是b,因为您要重新分配变量。

第二个赋值,基本上是创建新变量,而不知道变量已经存在,所以它只会这样做,但无法访问变量的先前持有值。

票数 0
EN

Stack Overflow用户

发布于 2018-10-07 06:28:55

c没有“指向ab”.它指向12对象。

代码语言:javascript
代码运行次数:0
运行
复制
>>> a = 1
>>> b = 2
>>> c = a
>>> c
1
>>> c = b
>>> c
2
>>> b = 3
>>> c
2

id() - bc点在同一“事物”上可以证明这一点:

代码语言:javascript
代码运行次数:0
运行
复制
>>> b = 2
>>> c = b
>>> id(b)
42766656
>>> id(c)
42766656
票数 7
EN

Stack Overflow用户

发布于 2018-10-07 06:35:37

同时回答您的两个问题,,c? 的值是什么?,我用每个变量的id()添加了一步一步的执行,并给出了适当的注释。希望这能帮助你正确理解引擎盖下发生的事情。

代码语言:javascript
代码运行次数:0
运行
复制
>>> 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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52685928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档