关于赋值
>>>myteacher = '小甲鱼'>>>yourteacher = myteacher
>>>yourteacher = '黑夜'
>>>print(myteacher)
>>> myteacher = '小甲鱼'
>>> yourteacher = myteacher
>>> myteacher = '黑夜'
>>> print(yourteacher)
说说我的理解,看是不是这样。第一个我以为是小甲鱼黑夜,但是输出之后是小甲鱼,后面我看了下。小甲鱼黑夜要用+将2个字符串拼接才能打出来。但是第一个为什么我print(yourteacher)出错了,yourteacher也赋值了啊,第二个同理。显示难道是根据对变量名的第一次赋值来计算吗?
本帖最后由 Twilight6 于 2020-4-26 01:07 编辑
出错不应该,应该是你不小心把变量名打错了
赋值 都是右边的赋值给左边,左边是变量,右边是所需要赋的值
赋值的时候,会把原有的值给覆盖
python中每个变量都会有自己的编号id,相同id的源头相同那么只要源头一变,所有与此源头有关的变量全部与之改变与中间参与的参数无关(可以用id(变量名)来查看是不是同一id) myteacher = '小甲鱼'
yourteacher = myteacher #yourteacher == '小甲鱼'
yourteacher = '黑夜'
print(myteacher) #打印myteacher,显示'小甲鱼'
myteacher = '小甲鱼'
yourteacher = myteacher #yourteacher == '小甲鱼' #理解为yourteacher指向了'小甲鱼',不应该理解为yourteacher指向了myteacher,实际yourteacher不随myteacher改变而改变
myteacher = '黑夜' #yourteacher == '小甲鱼' #理解为myteacher指向了'黑夜',不影响yourteacher指向了'小甲鱼'
print(yourteacher) #打印yourteacher,显示'黑夜'
#如果想打印小甲鱼黑夜
myteacher = '小甲鱼'
yourteacher = '黑夜'
print(myteacher + yourteacher) 先回答你的问题。
第一个你print(yourteacher)出错应该是你拼写出错了。正常情况下print(yourteacher)应该输出'黑夜'
第二个print(yourteacher)输出应该是'小甲鱼',print(myteacher)输出应该是'黑夜'
python的变量名实际上是标签,给变量名赋值实际上是向变量贴标签
执行完前两句之后,两个便桥都贴在'小甲鱼'上了。在给yourteacher或者myteacher赋值实际上是将标签撕下来贴到另一个变量上去,这样不改变原来的变量,也不改变其他标签
看一下这个图,是我之前做的。我懒得再重新做了,能表达这个意思,只是两个变量不一样。。
另外关于变量赋值与标签,可以看一下我之前的帖子:python细节之2、变量名与标签 变量的赋值与修改。 Twilight6 发表于 2020-4-26 00:59
出错不应该,应该是你不小心把变量名打错了
赋值 都是右边的赋值给左边,左边是变量,右边是所需要赋的 ...
第一个就是第三条把黑夜的值赋值给了yourteacher然后第二个yourteacher=myteacher就被覆盖了吗 麻麦皮 发表于 2020-4-26 01:03
但是第二个print(yourteacher)答案是小甲鱼啊 sunrise085 发表于 2020-4-26 08:45
先回答你的问题。
第一个你print(yourteacher)出错应该是你拼写出错了。正常情况下print(yourteacher)应该 ...
第一个我是复制的代码 打出来是小甲鱼我理解就是最好print(myteacher)只对应第一条赋值,因为只有第一条是把小甲鱼赋值给了myteacher
但是这样理解第二个应该是输出黑夜啊 但是答案是小甲鱼 小王学Python 发表于 2020-4-26 22:31
第一个就是第三条把黑夜的值赋值给了yourteacher然后第二个yourteacher=myteacher就被覆盖了吗
第一个对了
python中每个变量都会有自己的编号id,相同id的源头相同那么只要源头一变,所有与此源头有关的变量全部与之改变与中间参与的参数无关(可以用id(变量名)来查看是不是同一id)
第二个你认真看下这句,实际上这里的myteacher你可以看成是yourteacher的中间变量,直接看源头是 = ‘小甲鱼’,所以yourteacher = 小甲鱼 小王学Python 发表于 2020-4-26 22:39
第一个我是复制的代码 打出来是小甲鱼我理解就是最好print(myteacher)只对应第一条赋值,因为只有第一 ...
请认真看一下我在四楼的回答。
"小甲鱼"和"黑夜"实际上不应该称之为变量,而是字符串常量,myteacher和yourteacher是两个标签,所谓的赋值,都是贴标签,重新赋值就是将标签从一个字符串上撕下来贴到另一个字符串上去而已。没有覆盖不覆盖的。
页:
[1]