|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- def discounts(price, rate):
- final_price = price * rate
- print('這裡試圖打印全局變量old_price的值:',old_price)
- old_price = 88 #这里试图修改全局变量
- print('修改后old_price的值是:', old_price)
- return final_price
- old_price = float(input('请输入原价:'))
- rate = float(input('请输入折扣率:'))
- new_price = discounts(old_price, rate)
- print('修改后old_price的值是:', old_price)
- print('打折后价格是:', new_price)
复制代码
在小鱼老师,上课的过程中,有提到print('这里试图打印全局变量old_price的值:',old_price)这程式如没有注记的话,程式会出错
Traceback (most recent call last):
File "F:\C\影片\PYTHON\想變量為何會出錯.py", line 10, in <module>
new_price = discounts(old_price, rate)
File "F:\C\影片\PYTHON\想變量為何會出錯.py", line 3, in discounts
print('這裡試圖打印全局變量old_price的值:',old_price)
UnboundLocalError: local variable 'old_price' referenced before assignment\
但我觉得局部变量目前应该是你输入的值,而不会有未赋值的错误产生。
在函数中定义的局部变量如果和全局变量同名,则它会隐藏该全局变量。
也就是说在函数中只要有old_price = 88,就会把同名的全局变量屏蔽掉,无论在函数中的第几行。
所以你添加old_price = 88这行代码之后,整个函数中只存在一个局部变量old_price,你在给这个变量赋值之前就print 就会出现你的报错
如果你还是想要这么写,在函数开头部分添加 global old_price,声明函数中的这个变量是全局变量就可以了
- def discounts(price, rate):
- global old_price
- final_price = price * rate
- print('這裡試圖打印全局變量old_price的值:',old_price)
- old_price = 88 #这里试图修改全局变量
- print('修改后old_price的值是:', old_price)
- return final_price
- old_price = float(input('请输入原价:'))
- rate = float(input('请输入折扣率:'))
- new_price = discounts(old_price, rate)
- print('修改后old_price的值是:', old_price)
- print('打折后价格是:', new_price)
复制代码
|
|