Python中的命名空间和作用域
2020-06-28 05:18
344 查看
1 命名空间
命名空间是用来存放名字与对象绑定关系的。比如a=1,Python会申请内存空间存放对象1,然后将x与1的绑定关系存放在命名空间中。Python的命名空间是相互独立的。同一命名空间中不能有重名,不同的命名空间中可以有重名。就像同一个文件夹下不能存在相同的文件名,但不同的文件夹下可以存在相同的文件名。
Python中的三种命名空间
- 内置命名空间(built-in):存放Python的内置函数
- 全局命名空间(global):模块中定义的变量,函数,类
- 局部命名空间(local):函数中定义的变量
命名空间的加载顺序:内置、全局、局部
命名空间的查找顺序:局部、全局、内置
2 作用域
作用域就是Python程序中可以访问变量的区域,Python中一共有4种作用域
- local:函数内部
- enclosing:在嵌套函数中inner嵌套在outer里面,则对inner而言,outer的命名空间就是enclosing
- global: 模块中的变量
- built-in: Python内置函数
查找顺序:L-E-G-B 由里向外找
3 全局变量与局部变量
局部变量:定义在函数内部的变量,只能在函数内部访问
全局变量:在py文件中定义在函数外部的变量,在该py文件内部都可以访问
num = 1 a = "abc" def talk(): num = 2 print(num) #函数内部定义了变量num,这里的num为2 print(a) #函数内部没有定义变量a,则会到函数外面去找变量a,这里的a就是在函数外部定义的变量a为“abc” print(num) #在函数外部调用全局变量a print(a) talk()
结果为
1 abc 2 abc
如果我们想在函数内部修改函数外部的变量,这时候就需要用到global和nonlocal关键字
num = 1 def talk(): global num # 在函数内部声明全局变量 num = 2 talk() print(num) # 此处的输出结果为2
在嵌套函数中则使用nonlocal关键字
def outer(): num = 1 print("out函数中的num=",num) def inner(): nonlocal num num = 2 inner() print("out函数中的num=", num)
结果为
out函数中的num= 1 out函数中的num= 2
相关文章推荐
- Python3.2官方文档翻译--作用域和命名空间
- Python3.2官方文档翻译--作用域和命名空间
- python的命名空间和作用域
- Python全栈学习Day10 函数进阶:命名空间 作用域 闭包
- Python3.2官方文档翻译--作用域和命名空间实例
- Python中的命名空间、作用域以及locals() 和 globals()
- python的命名空间和作用域
- Python3.2官方文档翻译--作用域和命名空间实例
- Python 作用域和命名空间
- Python3之命名空间和作用域
- Python的变量作用域、命名空间和作用域的区别、This inspection detects shadowing names defined in outer scopes警告解决
- PYTHON学习0031:函数---命名空间和作用域----2019-6-25
- python____函数的命名空间和作用域
- Python中命名空间与作用域使用总结
- python基础之函数参数、嵌套、返回值、对象、命名空间和作用域
- python 命名空间和作用域
- Python作用域和命名空间
- 【ZZ】python命名空间与作用域
- python命名空间和作用域
- Python开发基础-Day6-函数参数、嵌套、返回值、对象、命名空间和作用域