关于python中的赋值变量的问题

代码:you='QH'me=youyou='LJQ'printyouprintme输出:LJQQH现在的问题是,让一个变量等于另一个变量时是让两个变量都指向同一个内存地址... 代码:
you='QH'
me=you
you='LJQ'
print you
print me
输出:
LJQ
QH

现在的问题是,让一个变量等于另一个变量时是让两个变量都指向同一个内存地址还是指向不同的?
展开
 我来答
一猪之哀伤一
2009-12-23 · TA获得超过669个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:288万
展开全部
是指向同一个内存地址的,python的赋值是只是把变量的内存地址赋值给另一个变量,这一点可以使用python的内建方法id()来进行测试,对于你给的例子:

我们假设'QH'这个字符串在内存中的地址是a,'LJQ'在内存中的地址是b

you='QH' #让you变量指向a地址
me=you #让me变量和you变量一样指向a地址
you='LJQ' #修改you变量,让它指向到b地址
print you #可想而知you指向的是b地址,所以它的值为'LJQ'
print me #me指向的是a地址,所以它的值为'QH'
输出:
LJQ
QH

可以使用ID来加强对python的赋值机制的理解

>>> a = 'asdf'
>>> id(a)
872552384
>>> b = a
>>> id(b)
872552384
>>> a = 'haha'
>>> id(a)
872552672
>>> id(b)
872552384
>>> a
'haha'
>>> b
'asdf'
ttvast
2009-12-23 · TA获得超过374个赞
知道小有建树答主
回答量:253
采纳率:75%
帮助的人:134万
展开全部
指向同一个内存地址. 但是即使是这样说,实际上还是有两种不同的理解

python变量分两种 mutable immutable, 就是可变和不可变的意思

数字,字符串 tuple (就是“()”这种形式的数组), 这种数据类型是不可变的, 因此
你以上的程序的含义是 you 指向 'QH', me指向you指向的内容, 所以me 就指向了'QH', 然后 you指向'LJQ', 这里是you本身的值变了, 而不是you指向的对象的值变了。

you=[1]
me=you
you.append(2)
print you
print me
输出
[1, 2]
[1, 2]

这里, 你看到 you.append(2), 这其实是you指向的 [1]对象进行了append()操作,因此是该对象本身发生了变化([],{}以及其他大部分数据类型都是可变数据类型), 因此 me 和 you都指向同一个对象, 输出自然就是相同的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jadesoul
2009-12-23 · 超过16用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:42.3万
展开全部
同一个地址,类似于ActionScript3, python中的字符串是不变对象,不允许对其中的字符按下标修改.当为某个字符串变量赋新的字符串值时,仅仅是更改这个变量指向的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式