fishj 发表于 2018-8-16 22:05:10

hlep关于全局和局部变量

在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

还望大神求助{:5_108:} {:5_108:} {:5_108:}

claws0n 发表于 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

fishj 发表于 2018-8-17 16:22:58

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

OK 我懂啦 感谢 感谢啊棒棒的{:5_106:}{:5_106:}{:5_106:}

claws0n 发表于 2018-8-17 16:26:36

fishj 发表于 2018-8-17 16:22
OK 我懂啦 感谢 感谢啊棒棒的

{:5_106:}
如果问题得以解决,记得采纳最佳答案哦~
页: [1]
查看完整版本: hlep关于全局和局部变量