关于给变量赋值的问题
例1:myteacher = '小甲鱼'
yourteacher = myteacher
yourteacher = '黑夜'
print(myteacher)
输出结果是:小甲鱼
例2:
my_foods = ['pizza','falafel','carrot cake']
friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
print(my_foods)
print(friend_foods)
输出结果是:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
例1变量存储字符串,例2变量存储列表,输出结果不一样的原因是赋值的类型不一样吗?这个该怎么理解呢? 本帖最后由 jackz007 于 2022-11-8 18:39 编辑
myteacher = '小甲鱼' # myteacher 指向 '小甲鱼'
yourteacher = myteacher# yourteacher 也指向 '小甲鱼'
yourteacher = '黑夜' # yourteacher 指向 '黑夜'
print(myteacher) # myteacher 依然指向 '小甲鱼'
my_foods = ['pizza','falafel','carrot cake']# my_foods 指向 ['pizza','falafel','carrot cake']
friend_foods = my_foods # friend_foods 也指向 ['pizza','falafel','carrot cake']
my_foods.append('cannoli') # ['pizza','falafel','carrot cake'] 添加新元素 'cannoli'
friend_foods.append('ice cream') # ['pizza','falafel','carrot cake' , 'cannoli'] 添加新元素 'ice cream'
print(my_foods) # ['pizza','falafel','carrot cake' , 'cannoli' , 'ice cream']
print(friend_foods) # ['pizza','falafel','carrot cake' , 'cannoli' , 'ice cream']
变量名只是贴在对象上的一个标签,只是访问对象的一个途径而已,一个对象可以同时有很多个标签,就像本例,多个变量同时指向同一个对象。例2中可修改对象改变,不影响贴在对象上的标签。 jackz007 发表于 2022-11-8 18:28
变量名只是贴在对象上的一个标签,只是访问对象的一个途径而已,一个对象可以同时有很多个标签, ...
例1初始yourteacher和myteacher同时指向‘小甲鱼‘,之后修改yourteacher没有影响myteacher
例2初始friend_foods和my_foods同时指向列表['pizza','falafel','carrot cake'],之后修改friend_foods影响了my_foods
修改例2:
my_foods = ['pizza','falafel','carrot cake']
friend_foods = my_foods
friend_foods = 'nuddle'
print(my_foods)
print(friend_foods)
输出结果为:
['nuddle', 'falafel', 'carrot cake']
['nuddle', 'falafel', 'carrot cake'] 本帖最后由 jackz007 于 2022-11-8 19:04 编辑
兜里两颗糖 发表于 2022-11-8 18:55
例1初始yourteacher和myteacher同时指向‘小甲鱼‘,之后修改yourteacher没有影响myteacher
例2初 ...
在变的是对象,变量只是提供了一个访问途径
friend_foods = 'nuddle'
这里只是借用变量 friend_foods 对对象['pizza','falafel','carrot cake'] 进行了改变而已,不能理解为"修改friend_foods影响了my_foods",其实,本质上是对象变了。 jackz007 发表于 2022-11-8 19:02
在变的是对象,变量只是提供了一个访问途径
这里只是借用变量 friend_foods 对对象 ...
那么在例1中第三行的yourteacher=‘黑夜’为什么就没有修改原对象的值呢? 兜里两颗糖 发表于 2022-11-8 19:06
那么在例1中第三行的yourteacher=‘黑夜’为什么就没有修改原对象的值呢?
它其实修改了 yourteacher 的值,但是被打印的是 myteacher ,管什么 yourteacher 呀 嘉岳呀 发表于 2022-11-8 19:10
它其实修改了 yourteacher 的值,但是被打印的是 myteacher ,管什么 yourteacher 呀
例2里修改了friend_foods的值,打印my_foods,输出的结果受friend_foods修改影响 兜里两颗糖 发表于 2022-11-8 19:14
例2里修改了friend_foods的值,打印my_foods,输出的结果受friend_foods修改影响
上面已经说过了 嘉岳呀 发表于 2022-11-8 19:22
上面已经说过了
有点头晕哈,我再研究研究,多谢了 本帖最后由 jackz007 于 2022-11-8 19:33 编辑
兜里两颗糖 发表于 2022-11-8 19:06
那么在例1中第三行的yourteacher=‘黑夜’为什么就没有修改原对象的值呢?
你的思维方式存在很大问题,非常不利于学习 Python,你必须学会以对象,而不是变量为中心来思考和解决问题。一个对象赋值给了多个变量,那就是多个变量对应了同一个对象,而绝不是每个变量对应一个自己的对象!!!
例1中第三行的 yourteacher = '黑夜' 只是变量 yourteacher 指向了另外一个新的对象 '黑夜' ,这应该不关其他变量 myteacher 什么事吧? jackz007 发表于 2022-11-8 19:28
你的思维方式存在很大问题,非常不利于学习 Python,你必须学会以对象,而不是变量为中心来思考 ...
多谢大佬!刚才冷静了一下重新捋了一遍您给我的回复,我找到问题所在了!
在例2里面我把
friend_foods = ‘nuddle’ 和 friend_foods =['nuddle','falafel','carrot cake']混为一个意思了,所以导致了认知错误。
页:
[1]