51Testing软件测试论坛

标题: 求教:python学习 局部变量与全局变量的问题 [打印本页]

作者: 海海豚    时间: 2016-9-22 16:07
标题: 求教:python学习 局部变量与全局变量的问题

python小白一只,正在学习python,学到全局变量与局部变量,这一块不太懂了,希望有大神可以指点一下

代码如下:
1.        def calculateTax(price,tax_rate):  
2.        total=price+(price*tax_rate)
3.        global my_price
4.        my_price=10000                     
5.        print(my_price)
6.        return total     
7.        my_price=float(input('Enter a price:'))
8.        totalPrice=calculateTax(my_price,0.06)
9.        total=calculateTax(my_price,0.06)
10.      print('price=',my_price,'Total price=',totalPrice,'Total=',total)
11.      print(my_price)   

输出结果是:
1.        Enter a price:5000
2.        10000
3.        10000
4.         price= 10000 Total price= 5300.0 Total= 10600.0
5.        10000



问题是:
1.  由第五行代码输出的my_price为什么在输出结果中输出了两次?
2.  在代码第三行,利用global定义的全局变量my_price在函数定义里面被赋值10000之后, totalPrice 调用calculateTax函数时,为什么取得是input的值5000,然后在 total 调用calculateTax函数时,my_price取得值却是10000呢???


求解 TUT

作者: 海海豚    时间: 2016-9-22 16:11
发现代码部分粘贴的缩进格式不正确,改一下,对了,我用的是3.X的python

代码如下:

1.        def calculateTax(price,tax_rate):  
2.              total=price+(price*tax_rate)
3.              global my_price
4.              my_price=10000                     
5.              print(my_price)
6.              return total     
7.        my_price=float(input('Enter a price:'))
8.        totalPrice=calculateTax(my_price,0.06)
9.        total=calculateTax(my_price,0.06)
10.      print('price=',my_price,'Total price=',totalPrice,'Total=',total)
11.      print(my_price)
作者: 若尘_51    时间: 2016-9-22 16:35
海海豚 发表于 2016-9-22 16:11
发现代码部分粘贴的缩进格式不正确,改一下,对了,我用的是3.X的python

代码如下:

解释下代码执行的过程,你看看:

def calculateTax(price,tax_rate):  
      total=price+(price*tax_rate)
      global my_price
      my_price=10000                     
      print(my_price)
      return total     
#键盘输入:5000
my_price=float(input('Enter a price:'))

#调用calculateTax函数, total=5000 + 5000*0.06 = 5300
#将my_price设为全局变量  my_price的值置为10000
#打印my_price的值,即10000
#返回5300给totalPrice
totalPrice=calculateTax(my_price,0.06)

#由于my_price是全局变量,值为10000
#调用calculateTax函数, total=10000+10000*0.06 = 10600
#将my_price设为全局变量  my_price的值置为10000
#打印my_price的值,即10000
返回10600给total

total=calculateTax(my_price,0.06)

#my_price是全局变量,值为10000
#第一次调用totalPrice为5300
#第二次调用total为10600
print('price=',my_price,'Total price=',totalPrice,'Total=',total)
print(my_price)
作者: 海海豚    时间: 2016-9-22 16:58
若尘_51 发表于 2016-9-22 16:35
解释下代码执行的过程,你看看:

def calculateTax(price,tax_rate):  

真的是非常谢谢,我没有把代码执行的过程想清楚,谢谢指点~




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2