125-变量作用域

局部变量和全局变量

函数外部区域是全局作用域(全局变量),函数内部区域的局部作用域(局部变量)

访问范围

作用域简单来说就是一个变量在哪里可以使用,在哪里不可以使用

随着函数的出现,作用域被分为局部作用域和全局作用域

局部变量

定义在局部作用域中的变量

局部变量只能在局部作用域中访问

垃圾回收机制:函数执行完毕后会垃圾回收

如果在函数执行完毕后,任然希望局部变量保存在内存中不被清理,可以使用闭包:321-闭包(装饰器的原理)

全局变量

定义在全局作用域的变量
全局访问

global关键字(只能用来申明)

!!不能这样:global num = 100

全局变量可以在局部作用域中访问但是不能修改
局部作用域中对全局变量修改

num = 10
def func():
    num = 100  # 如果只是num = 100 那就是定义一个新局部变量,函数结束后回收掉
func()
print(num)  # 输出10

对全局变量的修改👇(必须申明全局变量)

# 修改全局变量
num = 10
def func():
	global num  # 声明全局变量
    num = 100  # 如果只是num = 100 那就是定义一个新局部变量,函数结束后回收掉
func()
print(num)  # 输出100

注意!!

global关键字只是针对不可变数据类型的变量进行修改操作(数值、字符串、布尔类型、元组类型),可变类型(字典、列表、集合)可以不加global关键字