smartsy 发表于 2020-11-29 11:38:10

关于全局变量

如图,已经定义了一个全局变量,但最后的结果计算不正确,还是按照原来的局部变量计算,问题出在哪里?

逃兵 发表于 2020-11-29 11:51:32

问题出在你传入的参数是原始old_price,也就是80
先计算final_price后
再定义的全局变量old_price
这个时候fnal_price已经计算完了
old_price的值才被全局变量修改

jackz007 发表于 2020-11-29 11:53:37

      你的运行结果就是预期的啊,全局变量 old_price 在 discount() 中被修改为 90,最后在主函数中打印出来的值正是 90 啊,难道你希望它打印出别的值?

smartsy 发表于 2020-11-29 12:09:26

我想让最后输出的价格是67.5(90*0.75),该怎么修改呢?

sunrise085 发表于 2020-11-29 16:53:59

smartsy 发表于 2020-11-29 12:09
我想让最后输出的价格是67.5(90*0.75),该怎么修改呢?

用了global,那就没必要再传参了。
传进去的参数是一个原变量的拷贝,只是实参的值,不再是原变量。所以你的程序中,在discount方法内,price和old_price是两个变量,互不干扰,你是用price计算的,与old_price无关
def discount(rate):
    global old_price
    old_price=90
    final_price=old_price*rate
    print("在局部修改后的价格是%.2f"%old_price)
    return final_price
old_price=float(input("原始价格:"))
rate=float(input("折扣率:"))
new_price=discount(rate)

print("全局变量old_price现在是:%.2f"%old_price)
print("打折后的价格是:%.2f"%new_price)
页: [1]
查看完整版本: 关于全局变量