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关键字。