过程(procedure)是简单/特殊并且没有返回值的
函数 有返回值
python 严格来说只有函数没有过程
>>> def hello():
... print(‘Hello Junjie!‘)
...
>>> temp = hello()
Hello Junjie!
>>> temp
>>> print(temp)
None
>>> type(temp)
<class ‘NoneType‘>
python 动态确定类型 python没有变量,只有名字
返回多个值 用一个数据类型封装多个返回的值
>>> def back():
... return [1,‘junjie‘,3.14]
...
>>> back()
[1, ‘junjie‘, 3.14]
>>> def back():
... return 1,‘junjie‘,3.14
...
>>> back()
(1, ‘junjie‘, 3.14)
函数变量作用域 变量的可见性
局部变量(Local Variable) 函数中定义的变量,用栈进行存储 方法结束弹栈
全局变量(Grobal Variable) 作用域整个文件
>>> def discounts(price,rate):
... final_price = price * rate
... old_price = 88 #这里试图修改全局变量
... print(‘修改后old_price的值是:‘, old_price)
... return final_price
...
>>> old_price = float(input(‘请输入原价:‘))
请输入原价:999
>>> rate =float(input(‘请输入折扣‘))
请输入折扣0.5
>>> new_price = discounts(old_price,rate)
修改后old_price的值是: 88
>>> print(‘修改后old_price的值是‘,old_price)
修改后old_price的值是 999.0
>>> print(‘打折后的价格是‘,new_price)
打折后的价格是 499.5
>>> print(‘试图打印局部变量的值‘,final_price)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name ‘final_price‘ is not defined
全局变量 函数中修改全局变量
>>> count = 5
>>> def myFun():
... count = 10
... print(count)
...
>>> myFun()
10
>>> print(count)
5
old_price = 88 #这里试图修改全局变量
python会使用屏蔽(Shadowing)去保护 全局变量
试图去修改全局变量时,python会创建一个与全局变量名字一样的变量 局部变量和全局便利存储的位置不一样
global 关键字 函数中修改全局变量
>>> print(count)
5
>>> count = 5
>>> def myFun():
... global count
... count = 10
... print(count)
...
>>> myFun()
10
>>> print(count)
10