局部变量
- 局部变量,就是在函数内部定义的变量
- 其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的
- 因为其作用范围只是在自己的函数内部,所以不同的函数可以定义相同名字的局部变量(打个比方,把你、我是当做成函数,把局部变量理解为每个人手里的手机,你可有个iPhone8,我当然也可以有个iPhone8了, 互不相关)
- 局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储
- 当函数调用时,局部变量被创建,当函数调用完成后这个变量就不能够使用了
全局变量
如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是全局变量
打个比方:有2个兄弟 各自都有手机,各自有自己的小秘密在手机里,不让另外一方使用(可以理解为局部变量);但是家里的电话是2个兄弟都可以随便使用的(可以理解为全局变量)
函数的返回值
# encoding: utf-8
def test(a,b):
x = a // b
y = a % b
# 一般情况下, 一个函数最多只会执行一个return 语句
# 特殊情况下(finally语句)下,一个函数可能会执行多个return语句
# return 语句表示一个函数的结束
return x,y # 返回的本质就是一个元组
result = test(13,5)
print('商是{},余数是{}'.format(result[0],result[1]))
shang , yu = test(8,3)
print('商是{},余数是{}'.format(shang,yu))
一个函数中可以有多个return语句,但是只要有一个return语句被执行到,那么这个函数就会结束了,因此后面的return没有什么用处
return后面可以是元组,列表、字典等,只要是能够存储多个数据的类型,就可以一次性返回多个数据。
如果return后面有多个数据,那么默认是元组。
对返回的数据直接拆包
def get_my_info():
high = 178
weight = 100
age = 18
return high, weight, age # 函数返回三个数据,会自动打包为元组
# result = get_my_info() # result 接收到一个元组
# print(result)
my_high, my_weight, my_age = get_my_info() # 直接把元组拆分为三个变量来使用,更加方便
print(my_high)
print(my_weight)
print(my_age)
- 拆包时要注意,需要拆的数据的个数要与变量的个数相同,否则程序会异常
- 除了对元组拆包之外,还可以对列表、字典等拆包
可变类型和不可变类型
- 可变类型(修改数据,内存地址不会发生变化)有: 列表、字典、集合
- 不可变类型(修改数据,内存地址必定发生变化)有: 数字、字符串、元组