Python的函数与过程
函数(Function)有返回值。
过程(procedure)是简单、特殊并且没有返回值的函数。
>>> def hello():
print('Hello World!')
>>> temp = hello()
Hello World!
>>> temp
>>> print(temp)
None
>>> type(temp)
<class 'NoneType'>
>>> def back():
return[1,'小甲鱼',3.14]
>>> back()
[1, '小甲鱼', 3.14]
>>> def back1():
return 1,'小甲鱼',3.14
>>> back1()
(1, '小甲鱼', 3.14)
变量分为局部变量(Local Variable)和全局变量(Global Variable)
def discounts(price,rate):
final_price = price * rate
return final_price
old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price,rate)
print('打折后价格是:',new_price)
请输入原价:100
请输入折扣率:0.8
打折后价格是: 80.0
上面代码中,函数discounts()中的price、rate、final_price是局部变量;假如要在函数外去访问这些局部变量可以访问到吗?
def discounts(price,rate):
final_price = price * rate
return final_price
old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price,rate)
print('打折后价格是:',new_price)
print('这里我们想访问局部变量final_price',final_price)
请输入原价:200
请输入折扣率:0.8
打折后价格是: 160.0
Traceback (most recent call last):
File "E:/pythonPractice/discounts.py", line 9, in <module>
print('这里我们想访问局部变量final_price',final_price)
NameError: name 'final_price' is not defined
我们可以看到程序会报错,所以在函数外是访问不到的。
old_price、rate、new_price是全局变量,它们都是在函数外面定义的;那么在函数内部可以访问到这些全局变量吗?
def discounts(price,rate):
final_price = price * rate
print('这里我们试图访问全局变量old_price的值',old_price)
print('这里我们想访问全局变量new_price的值',new_price)
return final_price
old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price,rate)
print('打折后价格是:',new_price)
请输入原价:100
请输入折扣率:0.8
这里我们试图访问全局变量old_price的值 100.0
Traceback (most recent call last):
File "E:/pythonPractice/discounts.py", line 9, in <module>
new_price = discounts(old_price,rate)
File "E:/pythonPractice/discounts.py", line 4, in discounts
print('这里我们想访问全局变量new_price的值',new_price)
NameError: name 'new_price' is not defined
我们可以看到是可以访问全局变量的,但是是在函数调用前的全局变量
但是,不可以在函数里随意改变全局变量的值
def discounts(price,rate):
final_price = price * rate
#print('这里我们试图访问全局变量old_price的值',old_price)
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)
请输入原价:800
请输入折扣率:0.8
修改后的old_price的值1是: 50
修改后的old_price的值2是: 800.0
打折后价格是: 640.0
我们可以看到,如果想在函数内改变全局变量的值,Python会在函数内创建一个和全局变量一样名字的局部变量,全局变量仍然不变。