变量作用域
变量作用域就是你的变量到底“活”在哪个区域,哪里能访问它,哪里不能。大家知道你只能在你家里自由活动,不能随意进陌生人的家,变量也一样,有自己的“活动范围”,乱跑就会出问题!
一:全局变量-函数外面定义的变量
money = 10000 # 这是全局变量,下面的函数和其他地方都可以使用def living_room(): print(f"客厅里有{money}块钱")living_room() # 输出:客厅里有10000块钱print(money) # 输出:10000
二:局部变量-函数内部定义的变量,函数执行完毕释放变量所占空间
def bedroom(): money = 100 # 这是我的私房钱,属于局部变量 print(f"卧室里有{money}块钱")bedroom() # 输出:卧室里有100块钱print(money) # 超出变量的使用范围,报错!NameError: name 'money' is not defined
既有全局变量也有局部变量并且同名情况下会发生什么
money = 1000def steal(): money = 500 # 你以为在修改全局变量?这里用的不是全局变量,而是重新定义一个局部变量 print(f"偷偷拿了{money}")steal() # 输出:偷偷拿了500print(money) # 输出:1000(全局变量没变!)局部变量已经释放了只能是全局变量
假如函数内部想修改全局变量的值可以使用global关键字
def steal(): global money # 表示money是全局的变量money money = 500 # 修改全局变量值 print(f"偷偷拿了{money}")steal() # 输出:偷偷拿了500print(money) # 输出:500
代码案例
def outer(): x = "outer" def inner(): x = "inner" # 这是新的局部变量,不是outer里的x print("inner:", x) # 使用的是自己范围内的x inner() # inner函数执行,函数里面的x释放了 print("outer:", x) # 输出x的值为outer
假如想使用外部的x可以使用nonlocal关键词
def outer(): x = "outer" def inner(): nonlocal x # nonlocal翻译"非局部的" 告诉Python:我要用上一层函数的x x = "inner" # print("inner:", x) # 输出inner: inner inner() print("outer:", x) # 输出outer: innerouter()
龙哥出个题目给大家,评论区可以写出你的答案和分析过程
a = 1def outer(): a = 2 def inner(): global a a = 3 print("inner:", a) inner() print("outer:", a) outer()print("global:", a)
记得管好你的变量,别让它们搞事情!
💡 干货不容错过!
如果你觉得这篇文章对你有帮助,欢迎【分享】到朋友圈,让更多志同道合的小伙伴一起加入AI大模型的开发之旅!