鱼C论坛

 找回密码
 立即注册
查看: 2826|回复: 3

[已解决]hlep关于全局和局部变量

[复制链接]
发表于 2018-8-16 22:05:10 | 显示全部楼层 |阅读模式

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

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

x
在19讲的时候,小甲鱼介绍了全局部变量和全局变量的问题
当时小甲鱼有提到一点说


# print(‘这里试图打印全局变量old_price的值:' ,  old_price)

他说的是这句注释如果没有加的话是会报错的,但是没有和我们解释为什么会报错,
但是我自己在敲代码的时候我没有加上这一句注释,程序照样顺畅的运行,
得到的结果也是我想要的,和小甲鱼的结果是一样的,并没有出错。
def discounts(price , rate):
        final_price = price*rate
        old_price = 50
        print('修改够old_price的值是1:' ,old_price)
        return final_price


old_price = float(input('请输入价格:' ))
rate  = float(input('折扣是;'))
new_price = discounts(old_price , rate)
print('修改后old_price的值是2:' , old_price)
print('折后的价格是;' ,new_price)

========================= RESTART: D:\IDLE\等下要删除的.py =========================
请输入价格:100
折扣是;0.8
修改够old_price的值是1: 50
修改后old_price的值是2: 100.0
折后的价格是; 80.0

还望大神求助

最佳答案
2018-8-16 22:37:59

# print(‘这里试图打印全局变量old_price的值:' ,  old_price)
# 这个注释的问题要看你之前有没有定义。如果你还没有定义,那么目前, print() 是找不到 old_price 的,所以会报错~

def discounts(price , rate):
        final_price = price*rate
        old_price = 50            #内部定义的,所以是局部变量
        print('修改够old_price的值是1:' ,old_price) #对应的是局部变量
        return final_price


old_price = float(input('请输入价格:' ))
rate  = float(input('折扣是;'))
new_price = discounts(old_price , rate)      # 返回 final_price,而局部变量 old_price = 50 也就被遗忘了
print('修改后old_price的值是2:' , old_price)   #这里的是你一开始输入的 input()
print('折后的价格是;' ,new_price)

========================= RESTART: D:\IDLE\等下要删除的.py =========================
请输入价格:100
折扣是;0.8
修改够old_price的值是1: 50
修改后old_price的值是2: 100.0
折后的价格是; 800.0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-8-16 22:37:59 | 显示全部楼层    本楼为最佳答案   

# print(‘这里试图打印全局变量old_price的值:' ,  old_price)
# 这个注释的问题要看你之前有没有定义。如果你还没有定义,那么目前, print() 是找不到 old_price 的,所以会报错~

def discounts(price , rate):
        final_price = price*rate
        old_price = 50            #内部定义的,所以是局部变量
        print('修改够old_price的值是1:' ,old_price) #对应的是局部变量
        return final_price


old_price = float(input('请输入价格:' ))
rate  = float(input('折扣是;'))
new_price = discounts(old_price , rate)      # 返回 final_price,而局部变量 old_price = 50 也就被遗忘了
print('修改后old_price的值是2:' , old_price)   #这里的是你一开始输入的 input()
print('折后的价格是;' ,new_price)

========================= RESTART: D:\IDLE\等下要删除的.py =========================
请输入价格:100
折扣是;0.8
修改够old_price的值是1: 50
修改后old_price的值是2: 100.0
折后的价格是; 800.0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-17 16:22:58 | 显示全部楼层
claws0n 发表于 2018-8-16 22:37
# print(‘这里试图打印全局变量old_price的值:' ,  old_price)
# 这个注释的问题要看你之前有没有定义 ...

OK 我懂啦 感谢 感谢啊  棒棒的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-17 16:26:36 | 显示全部楼层
fishj 发表于 2018-8-17 16:22
OK 我懂啦 感谢 感谢啊  棒棒的


如果问题得以解决,记得采纳最佳答案哦~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 03:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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