zhongduannimei 发表于 2020-5-24 21:56:08

第二讲第二题问题

>>> myteacher = '小甲鱼'
>>> yourteacher = myteacher
>>> myteacher = '黑夜'
>>> print(yourteacher)

这道题能不能请大神给我讲解一下
第二句yourteacher指向的是 myteacher第三句myteacher已经变成了黑夜 为什么输出yourteacher还是小甲鱼{:10_277:}

qiuyouzhi 发表于 2020-5-24 21:57:10

和贴标签一样,你把myteacher的标签撕了下来,贴到了 '黑夜'上,这时候它和yourteacher已经没有任何关系了。

zhongduannimei 发表于 2020-5-24 21:58:35

是不是yourteacher随着myteacher变化不是yourteacher一直指向myteacher吗

永恒的蓝色梦想 发表于 2020-5-24 21:59:05

zhongduannimei 发表于 2020-5-24 21:58
是不是yourteacher随着myteacher变化不是yourteacher一直指向myteacher吗

yourteacher随着myteacher变化不是

qiuyouzhi 发表于 2020-5-24 21:59:28

zhongduannimei 发表于 2020-5-24 21:58
是不是yourteacher随着myteacher变化不是yourteacher一直指向myteacher吗

1,请回复我,不然我看不见
2,不是的,把标签撕了下来,就和原来的yourteacher没有关系了

Twilight6 发表于 2020-5-24 21:59:33

zhongduannimei 发表于 2020-5-24 21:58
是不是yourteacher随着myteacher变化不是yourteacher一直指向myteacher吗

不是ourteacher随着myteacher变化

是因为他们的源头都是 小甲鱼

Twilight6 发表于 2020-5-24 22:00:53

zhongduannimei 发表于 2020-5-24 21:58
是不是yourteacher随着myteacher变化不是yourteacher一直指向myteacher吗

他们都指向 小甲鱼
记住 不可变类型(如 字符串 number类 tuple)的赋值 都会一定覆盖原来有的值可变类型的不一定

zhongduannimei 发表于 2020-5-24 22:06:50

qiuyouzhi 发表于 2020-5-24 21:59
1,请回复我,不然我看不见
2,不是的,把标签撕了下来,就和原来的yourteacher没有关系了

1好的{:10_264:}

柿子饼同学 发表于 2020-5-24 22:07:12

本帖最后由 柿子饼同学 于 2020-5-24 22:10 编辑

我们可以把myteacher=小甲鱼和yourteacher=黑夜放在一起,这时你写yourteacher=myteacher,所以黑夜就是小甲鱼,=是个赋值运算符。因为yourteacher在前,所以黑夜就变成小甲鱼了,但如果myteacher在前,那小甲鱼就是黑夜{:10_254:}

Twilight6 发表于 2020-5-24 22:10:41

你可以用Python 内置函数 id() 来查询他们的地址   
myteacher = '小甲鱼'
yourteacher = myteacher
print(id(myteacher))
print(id(yourteacher))
他们地址一样,只要源头发生改变 所有指向同个地址的都会一起改变

zhongduannimei 发表于 2020-5-24 22:11:31

Twilight6 发表于 2020-5-24 22:00
他们都指向 小甲鱼
记住 不可变类型(如 字符串 number类 tuple)的赋值 都会一定覆盖原来有的值可变 ...

所以 如果yourteacher=myteachermytecher是一个可变类型yourther就会随时和myteacher 相同吗

Twilight6 发表于 2020-5-24 22:15:01

本帖最后由 Twilight6 于 2020-5-24 22:16 编辑

zhongduannimei 发表于 2020-5-24 22:11
所以 如果yourteacher=myteachermytecher是一个可变类型yourther就会随时和myteacher 相同吗

yourteacher=myteacher
不是重新赋值,这个实际上是叫做 再次取个别名
原本 mytecher 就是给 小甲鱼取的别名你重新在 yourteacher=myteacher 等于是再给小甲鱼取了个 yourteacher的别名

别名不了解的话 就说外号吧,把他当作外号来理解 ,一个人能有很多外号,但是都是那个人,那个人今天变帅了 外号都是和他关联的 也都变帅了
如果这样赋值:
mytecher = '小猪猪'
这样就会改变mytecher 的地址,而youteacher 还是指向小甲鱼那个地址 所有不会改变~

zhongduannimei 发表于 2020-5-24 22:24:06

Twilight6 发表于 2020-5-24 22:10
你可以用Python 内置函数 id() 来查询他们的地址   

他们地址一样,只要源头发生改变 所有指向同个地址 ...

我按照你的代码查了他们的地址是一样的 地址一样为什么值不一样就是像你说的因为给他们赋值的是字符串是不可变类型 所以他们呢输出不一样吗

zhongduannimei 发表于 2020-5-24 22:27:04

Twilight6 发表于 2020-5-24 22:10
你可以用Python 内置函数 id() 来查询他们的地址   

他们地址一样,只要源头发生改变 所有指向同个地址 ...

我是新鱼友等级不够加不了好友{:10_269:}

Twilight6 发表于 2020-5-24 22:31:00

zhongduannimei 发表于 2020-5-24 22:24
我按照你的代码查了他们的地址是一样的 地址一样为什么值不一样就是像你说的因为给他们赋值的是字符串 ...

地址一样 值就一样

Twilight6 发表于 2020-5-24 22:32:10

zhongduannimei 发表于 2020-5-24 22:24
我按照你的代码查了他们的地址是一样的 地址一样为什么值不一样就是像你说的因为给他们赋值的是字符串 ...


地址相同 值就相同

zhongduannimei 发表于 2020-5-24 22:50:28

Twilight6 发表于 2020-5-24 22:31
地址一样 值就一样


>>> myteacher = '小甲鱼'
>>> yourteacher = myteacher
>>> myteacher = '黑夜'
>>> print(yourteacher)
这时候myteacher和yourteacher地址不同了
是不是意味着对myteacher赋值改变了myteacher的地址

Twilight6 发表于 2020-5-24 23:15:08

zhongduannimei 发表于 2020-5-24 22:50
>>> myteacher = '小甲鱼'
>>> yourteacher = myteacher
>>> myteacher = '黑夜'


对的就是把这个外号给另一个人了

zhongduannimei 发表于 2020-5-25 18:06:22

Twilight6 发表于 2020-5-24 23:15
对的就是把这个外号给另一个人了

明白了 谢谢大神{:10_254:}

Twilight6 发表于 2020-5-25 18:10:42

zhongduannimei 发表于 2020-5-25 18:06
明白了 谢谢大神

别我不是大大声 QAQ
页: [1] 2
查看完整版本: 第二讲第二题问题