陈芷韩 发表于 2017-3-29 11:28:34

零基础入门学习Python课后作业第3讲问题

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

这里的myteacher,初始赋值为‘小甲鱼’,
后面又赋值为‘黑夜’,而且yourteacher = myteacher,
为什么最后的print(yourteacher),
出来的结果是‘小甲鱼’,而不是‘黑夜’呢?

菜鸟唐 发表于 2017-3-29 11:36:55

因为你在赋值给yourteacher的时候。你的myteacher的值为“小甲鱼”

陈芷韩 发表于 2017-3-29 11:43:46

菜鸟唐 发表于 2017-3-29 11:36
因为你在赋值给yourteacher的时候。你的myteacher的值为“小甲鱼”

也就是说,如果已经赋值变量A = B,后面B的值再变化,对变量A的值不会产生任何影响吗?

hongji 发表于 2017-3-29 13:18:42

>>> myteacher = '小甲鱼' #试着当这行不存在
>>> yourteacher = myteacher #把myteacher看成‘小甲鱼’
>>> myteacher = '黑夜' #所以此时再给myteacher赋值不会影响上面
>>> print(yourteacher)

陈芷韩 发表于 2017-3-29 14:29:44

hongji 发表于 2017-3-29 13:18
>>> myteacher = '小甲鱼' #试着当这行不存在
>>> yourteacher = myteacher #把myteacher看成‘小甲鱼’
...

可以这么理解吗?
如果已经赋值变量A = 变量B,
即使后面变量B的值再怎么变化,也不会对变量A的值产生任何影响?

yuclta 发表于 2017-3-29 14:30:24

同意4楼hongji的意见及回复方式。

hedy123 发表于 2017-3-29 14:55:35

视频里面小甲鱼老师说了一句关键的话:右边的值赋给左边。

>>> myteacher = '小甲鱼'      
# # #把“小甲鱼”这个值,赋值给变量“myteacher” # # #
>>> yourteacher = myteacher
# # #把变量myteacher的值 赋值给变量“yourteacher”,而此时myteacher的值是“小甲鱼”,因此变量“yourteacher”的值也是“小甲鱼” # # #
>>> myteacher = '黑夜'   
# # #这一行没用,跟要打印的问题无关,变量yourteacher已经有值了 # # #
>>> print(yourteacher)
# # #所以打印变量yourteacher的值是 “小甲鱼”

我是这么理解的,不知是否说清楚了。

weng_d 发表于 2017-3-29 17:30:25

没上机 第一次想答案的时候想错了.   看了你们的解释, 明白多了

感谢各位

Aifrincoo 发表于 2017-3-29 22:42:38

把小甲鱼和黑夜比喻成两个货物
myteacher和yourteacher比喻标签
>>> myteacher = '小甲鱼'                     把标签myteacher‘贴’在 '小甲鱼'上
>>> yourteacher = myteacher            把标签yourteacher‘贴’在贴着myteacher的货物——'小甲鱼'上
>>> myteacher = '黑夜'                        把标签myteacher 撕下贴在'黑夜' 上(标签myteacher还留在原处)
>>> print(yourteacher)                        打印贴着标签yourteacher的货物
不知道这样说你是不是会更好理解

nuoyayuanzhou 发表于 2017-3-30 09:04:27


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

其实我们可以这样理解.赋值是有顺序的,最后一句话打印的是yourteacher....这个时候我们看前两句,yourteacher=myteacher=小甲鱼..这个时候yourteacher就是小甲鱼..现在myteacher=黑夜了..但是yourteacher没变,因为没有执行yourteacher=myteacher....所以还是小甲鱼...

或者你可以这样理解...最后一句print调用的是yourteacher...第三句和yourteacher没有关系...所以可以直接忽略第三句赋值

陈芷韩 发表于 2017-3-30 09:05:36

Aifrincoo 发表于 2017-3-29 22:42
把小甲鱼和黑夜比喻成两个货物
myteacher和yourteacher比喻标签
>>> myteacher = '小甲鱼'               ...

这样说,确实好理解了,谢谢啦

nuoyayuanzhou 发表于 2017-3-30 09:14:59

我再举个例子
a=1
b=a
c=b
d=c
a=18
print(b)
b就是1
我们调用的b..是不是后面你不管c=b 或者d=c甚至是a=18..那都是再b=a后面出现的,,,跟前面的赋值没有关系,,,所以只要后面没有对b重新赋值..就完全可以忽略...至少在第二行的时候b就是1

陈芷韩 发表于 2017-3-30 09:18:04

nuoyayuanzhou 发表于 2017-3-30 09:14
我再举个例子
a=1
b=a


“只要后面没有对b重新赋值,就完全可以忽略。”这句话很关键,谢谢~{:5_106:}

nuoyayuanzhou 发表于 2017-3-30 09:19:06

陈芷韩 发表于 2017-3-29 14:29
可以这么理解吗?
如果已经赋值变量A = 变量B,
即使后面变量B的值再怎么变化,也不会对变量A的值产生 ...

大部分情况下..可以这样理解...也有一些特殊情况.以后会学..
A要怎么变...需要给A赋值才对...跟变量B..没有任何关系...

路漫漫Celia 发表于 2018-3-14 23:30:27

请问如何自动对B进行进行A的赋值呢?而不是每次都在A变化后更新B?

zhuzhuvswho 发表于 2019-5-4 11:21:32

很棒棒 表述的很清晰

一只小小萌新 发表于 2021-4-14 09:20:31

就相当于有a,b两个数,a=1,b,把a的值赋给b,b的值就是1,后面只要没有新的值赋给b,输出b,b的值就是1
页: [1]
查看完整版本: 零基础入门学习Python课后作业第3讲问题