鱼C论坛

 找回密码
 立即注册
查看: 1571|回复: 6

[已解决]请问我自己写的程序中,两个temp的定义不同,为何能执行

[复制链接]
发表于 2018-1-5 00:49:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我自己试着写的程序:
password = "123456"
temp = input("请输入密码:")
while temp != password:
    temp = input ("请重新输入密码:")
else:
    print ("正在链接您需要的页面.....请稍等")

其中,temp 赋值了两次,各不相同,为什么程序还能执行呢?是因为一个是while 内循环的,一个是外部的吗?那么python 怎么判断重复赋值?
小鱼老师曾有2个练习,请教一下如何理解?
1. >>>myteacher = '小甲鱼'
>>>yourteacher = myteacher
>>>yourteacher = '黑夜'
>>>print(myteacher)
结果:小甲鱼
2. >>> myteacher = '小甲鱼'
>>> yourteacher = myteacher
>>> myteacher = '黑夜'
>>> print(yourteacher)
结果:小甲鱼
最佳答案
2018-1-5 09:15:17
本帖最后由 铁棍阿童木 于 2018-1-5 09:29 编辑

记住一点就行了,Python的变量名就是一个标签,哪里需要就去哪里!
temp = input("请输入密码:")      # 这个时候变量名 temp 指向你第一次输入的值;
进入循环后 >>>
temp = input("请重新输入密码:")   # 这个时候变量名 temp 就指向了你第二次、第三次.....第N次输入的值(直到循环结束),temp 只会指向最后一次赋予的值。
在整个程序运行过程中曾经赋予变量名 temp 的值因为没有其他标签指向它,所以都会被Python的垃圾回收机制处理了。


按照以上所诉,就不难理解你提到的小练习了。
练习1.
>>> myteacher = "小甲鱼"             # 在这里,把变量名 myteacher 指向了字符串 “小甲鱼”;
>>> yourteacher = myteacher        # 接着又将变量名 yourteacher 指向了变量 myteacher 的值(可以理解为字符串 “小甲鱼”现在有两个标签 myteacher 和 yourteacher)
>>> yourteacher = "黑夜"              # 紧接着又把变量名 yourteacher 指向了字符串 “黑夜”;
所以:
>>> print(myteacher)                    # 结果就是“小甲鱼”(因为变量名 myteacher 仍然指向字符串“小甲鱼”)

练习2.就应该不难理解了。第二步过后,变量名 yourteacher 和 myteacher 同时指向字符串“小甲鱼”;
                                      然后,把变量名 myteacher 指向了一个新的字符串 “黑夜”;
                                      最后打印变量 yourteacher 的值,当然还是原来的“小甲鱼”啊,自始自终她都没变过。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-5 03:08:41 | 显示全部楼层
两个字:覆盖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 07:39:08 From FishC Mobile | 显示全部楼层
每次赋值都抛弃原来的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 09:15:17 | 显示全部楼层    本楼为最佳答案   
本帖最后由 铁棍阿童木 于 2018-1-5 09:29 编辑

记住一点就行了,Python的变量名就是一个标签,哪里需要就去哪里!
temp = input("请输入密码:")      # 这个时候变量名 temp 指向你第一次输入的值;
进入循环后 >>>
temp = input("请重新输入密码:")   # 这个时候变量名 temp 就指向了你第二次、第三次.....第N次输入的值(直到循环结束),temp 只会指向最后一次赋予的值。
在整个程序运行过程中曾经赋予变量名 temp 的值因为没有其他标签指向它,所以都会被Python的垃圾回收机制处理了。


按照以上所诉,就不难理解你提到的小练习了。
练习1.
>>> myteacher = "小甲鱼"             # 在这里,把变量名 myteacher 指向了字符串 “小甲鱼”;
>>> yourteacher = myteacher        # 接着又将变量名 yourteacher 指向了变量 myteacher 的值(可以理解为字符串 “小甲鱼”现在有两个标签 myteacher 和 yourteacher)
>>> yourteacher = "黑夜"              # 紧接着又把变量名 yourteacher 指向了字符串 “黑夜”;
所以:
>>> print(myteacher)                    # 结果就是“小甲鱼”(因为变量名 myteacher 仍然指向字符串“小甲鱼”)

练习2.就应该不难理解了。第二步过后,变量名 yourteacher 和 myteacher 同时指向字符串“小甲鱼”;
                                      然后,把变量名 myteacher 指向了一个新的字符串 “黑夜”;
                                      最后打印变量 yourteacher 的值,当然还是原来的“小甲鱼”啊,自始自终她都没变过。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-5 09:27:20 | 显示全部楼层
谢谢大家的回复,辛苦了!以后还请多指教~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-5 09:28:36 | 显示全部楼层

谢谢你解答我的疑问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-5 09:29:05 | 显示全部楼层
BngThea 发表于 2018-1-5 07:39
每次赋值都抛弃原来的值

谢谢你的回答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 15:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表