星陨——鹿 发表于 2022-7-24 16:39:18

新手代码求助

>>> myteacher = '小甲鱼'
>>> yourteacher = myteacher
>>> myteacher = '黑夜'
>>> print(yourteacher)
谁能告诉我,为什么小甲鱼的答案是(小甲鱼)
我的理由:因为先前myteacher被赋值为‘小甲鱼’,后面yourteacher被myteacher赋值,变为'小甲鱼',又因为myteacher被赋值为‘黑夜’,yourteacher因为被myteacher赋值,所以不应该是’黑夜‘吗?
能否详细解答,并说服我的理由.
{:10_269:}

青出于蓝 发表于 2022-7-24 16:57:05

本帖最后由 青出于蓝 于 2022-7-24 17:00 编辑

注意语句运行顺序

第2行 yourteacher = myteacher

将'小甲鱼'赋给yourteacher

myteacher在第3行改变,可是赋值语句在第2行

如果 2,3行调转,则是 '黑夜'

也就是说,赋值过程是一次性的,之后赋值的对象即使改变,被赋值的变量也不会受影响!


欢迎追问!

临时号 发表于 2022-7-24 16:57:44

使用id函数可以看到变量的地址
那你可以看看下面的代码
>>> myteacher = '小甲鱼'
>>> id(myteacher)
5476040
>>> yourteacher = myteacher
>>> id(yourteacher)
5476040
>>> myteacher = '黑夜'
>>> id(myteacher)
5556416
>>> id(yourteacher)
5476040
>>>
可以看到在yourteacher = myteacher之后,yourteacher的地址就跟myteacher的地址一样了,但在myteacher = '黑夜'之后,myteacher的地址就变成了另一个地址,而yourteacher的地址还是原来的地址,所以yourteacher = myteacher并不是将yourteacher和myteacher关联起来,他们仅仅只是指向了同一个地址,如果其中一个变量指向了另一个地址,另一个变量指向的还是原来的地址

星陨——鹿 发表于 2022-7-24 17:00:09

青出于蓝 发表于 2022-7-24 16:57
注意语句运行顺序

第2行 yourteacher = myteacher


嗷,谢谢{:5_91:}

星陨——鹿 发表于 2022-7-24 17:01:59

临时号 发表于 2022-7-24 16:57
使用id函数可以看到变量的地址
那你可以看看下面的代码



谢谢,虽然我不知道id函数是什么,大概意思我懂了,谢谢!{:5_91:}
页: [1]
查看完整版本: 新手代码求助