为什么global oldprice没有生效?
学到函数时,里面有一部分是将局部变量和全局变量的。在书中有提到:如果想要在函数中对全局变量进行修改,可以通过global关键字来达到目的。书中还举了一个例子:
>>> count = 5
>>> def myFun():
global count
count = 10
print(count)
>>> myFun()
10
>>> count
10
这个倒也不难,所以我打算弄个例子试一下。于是我写了如下一段代码:
oldprice = float(input('请输入原价:'))
def zhekou(price,rate):
global oldprice
oldprice = 50
finalprice = price * rate
return finalprice
rate = float(input('请输入折扣:'))
newprice = zhekou(oldprice,rate)
print('最终的价格是:%.2f' % newprice)
按照我的设想,程序执行的步骤如下:
1、通过input获取了一个oldprice(假如等于80);
2、通过input获取了一个rate(假如等于0.5);
3、newprice调用了,zhekou这个函数,把80赋值给了price这个参数,把0.5赋值给了rate这个参数;
4、在函数的内部,又将oldprice改成了50;
5、函数将50复制给price;
6、函数return出finalprice这个结果,并将其赋值给newprice;
7、print命令将其打印。
按照以上步骤理解,最终输出的结果应该为50 *0.5 = 25. 然而结果却是40. 但我单独print(oldprice)却得出了50这么一个结果。那么按照结果推测,应该是第5步并未执行。可我想知道为什么?
按照从上到下的顺序,不就是应该先执行oldprice = 50,然后才执行finalprice = price * rate 的吗?
第二个问题,如果我就想通过在函数内部修改全局变量来实现最终的newprice是25,代码要怎么修改呢? 第五行 改成finalprice = oldprice * rate
price这个参数没用可以删了
页:
[1]