Python:变量作用域 什么是全局变量、局部变量
2018-09-09 10:52
239 查看
版权声明:本人原创文章,转载请注明出处 https://blog.csdn.net/qq_28766729/article/details/82556516
变量作用域
变量由作用范围来限制,按照作用域分类可分为:
- 全局(global): 在函数外部定义
- 局部(local):在函数内部定义
变量的作用范围:
- 全局变量:在整个全局范围都有效
- 全局变量在局部可以使用(即函数内部可以方位函数外部定义的变量)
- 局部变量在局部范围可以使用
- 局部变量在全局范围无法使用,在局部范围内(比如函数)将局部变量用global函数定义为全局函数,并且调用了此函数后,在全局范围内能调用此局部变量。
LEGB原则
L(Local)局部作用域
E(Enclosing function locale)外部嵌套函数作用域
G(Global module)函数定义所在模块作用域
B(Buildin): python内置魔抗的作用域
global函数
使用global函数可以将局部范围内(比如函数)的局部变量提升为全局变量。
def fun(): global a2 global a3#将a2、a3定义为全局变量 a2=20 print(a2) a3 =99 print(a3) #print(a2)调用函数前,调用内部变量a2会报错 fun()#只有在调用此函数后,内部的局部变量才能被调用 print(a2) print(a3) 20 99 20 99
再举一个例子
b2 = 22#全局变量 def fun(): b2 = 99#局部变量 print(b2) print(b2) fun()#函数调用全局变量,输出b2=99 print(b2)#函数内部没定义b2为全局变量,所以依然输出为22 22 99 22
globals, locals函数
可以通过globals和locals显示出局部变量和全局变量,可以从我之前编的汉诺塔程序体会到Locals函数的好处,可以帮助理解递归中,各个变量的赋值变化。
locas函数:
函数功能为,返回当前作用域内的局部变量和其值组成的字典,与globals函数类似(返回全局变量),可用于函数内。函数所返回的字典集合不能修改,不知道能不能将其转换为列表进行更改,下次试试。
def hanoi(n,a,b,c): if n==1: print(a,'-->',c) else: print(locals()) hanoi(n-1,a,c,b)# print(locals()) hanoi(1,a,b,c) print(locals()) hanoi(n-1,b,a,c) print(locals()) hanoi(3,'A','B','C') {'c': 'C', 'b': 'B', 'a': 'A', 'n': 3} {'c': 'B', 'b': 'C', 'a': 'A', 'n': 2} A --> C {'c': 'B', 'b': 'C', 'a': 'A', 'n': 2} A --> B {'c': 'B', 'b': 'C', 'a': 'A', 'n': 2} C --> B {'c': 'B', 'b': 'C', 'a': 'A', 'n': 2} {'c': 'C', 'b': 'B', 'a': 'A', 'n': 3} A --> C {'c': 'C', 'b': 'B', 'a': 'A', 'n': 3} {'c': 'C', 'b': 'A', 'a': 'B', 'n': 2} B --> A {'c': 'C', 'b': 'A', 'a': 'B', 'n': 2} B --> C {'c': 'C', 'b': 'A', 'a': 'B', 'n': 2} A --> C {'c': 'C', 'b': 'A', 'a': 'B', 'n': 2} {'c': 'C', 'b': 'B', 'a': 'A', 'n': 3}阅读更多
相关文章推荐
- 从局部变量和全局变量开始全面解析Python中变量的作用域
- Python3.5——局部变量与全局变量作用域
- 从局部变量和全局变量开始全面解析Python中变量的作用域
- JS的作用域和声明提前,js中局部变量泄露为全局变量
- 局部变量 全局变量 作用域 静态存储 动态存储,看书
- python入门基础教程07 python的局部变量和全局变量
- 认清JavaScript和JAVA全局变量和局部变量的作用域
- Python局部变量和全局变量
- 作用域 全局变量 局部变量 静态变量 外部变量 常量 volatile变量
- python中的局部变量与全局变量
- python变量总结: 全局变量、局部变量、类变量、实例变量以及global和nonlocal关键字的使用示例
- Python函数中的局部变量和全局变量
- Python 全局变量 局部变量
- 3.8 Python函数中的局部变量和全局变量
- 什么是java的局部变量,成员变量,全局变量?
- python全局变量和局部变量
- Python全局变量和局部变量
- Python全局变量和局部变量
- python里面的全局变量和局部变量的区别(很好的一篇文章,找不到出处,原作者看到请联系,我会署上名字)
- python大盘点:全局变量、局部变量、类变量、实例变量