函数与过程
函数(function):是有返回值的
过程(procedure):是简单、特殊并且没有返回值的
python严格意义上来说只有函数没有过程
1 def hello(): 2 print('hello world!') 3 4 5 temp = hello() 6 hello world! 7 temp 8 print(temp) 9 None 10 type(temp) 11 <class 'NoneType'> 12 def back(): 13 return [1,'hello',3.174] 14 15 back() 16 [1, 'hello', 3.174]
局部变量(local variable) 全局变量(global variable)
def discount(price,rate): final_price = price * rate return final_price old_price = float(input('请输入原价: ')) rate = float(input('请输入折扣: ')) new_price = discount(old_price,rate) print('打折后的价格是:%.2f' % new_price)
请输入原价: 100
请输入折扣: 0.5
打折后的价格是:50.00
在函数discount(price,rate)中两个参数是price和rate,还有一个是final_pricr,它们都是discount()函数中的局部变量。
修改下代码,看下局部变量的范围
def discount(price,rate): final_price = price * rate return final_price old_price = float(input('请输入原价: ')) rate = float(input('请输入折扣: ')) new_price = discount(old_price,rate) print('这里试图打印局部变量final_price的值:' ,final_price) 请输入原价: 100 请输入折扣: 0.5 Traceback (most recent call last): File "D:/python/练习/6.3.1 discount.py", line 7, in <module> print('这里试图打印局部变量final_price的值:' ,final_price) NameError: name 'final_price' is not defined
old_price 和 new_price 和 rate 是在函数外定义的,是全局变量,
假如在函数内部去执行读取全局变量,是否可行?
def discount(price,rate): final_price = price * rate print('这里试图访问全局变量old_price的值:',old_price) return final_price old_price = float(input('请输入原价: ')) rate = float(input('请输入折扣: ')) new_price = discount(old_price,rate) print('打折后的价格是:' ,new_price) 请输入原价: 100 请输入折扣: 0.5 这里试图访问全局变量old_price的值: 100.0 打折后的价格是: 50.0
在函数中试图修改全局变量,会发生什么?
python会自动创建一个局部变量(名字是一样的)
全局变量在整个代码中都是可以被访问的,在函数内部只能访问但是不能修改全局变量,否则python会自动创建一个名字一样的局部变量。