名称空间
Posted shicongcong0910
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了名称空间相关的知识,希望对你有一定的参考价值。
名称空间:
内置 全局 局部
内置命名空间 存放python解释器为我们提供的名字list str tuple之类的
全局命名空间 直接在py文件中,函数外部声明的变量都是属于命名空间
局部命名空间 在函数中声明的变量
取值顺序:
1.局部命名空间
2.全局命名空间
3.内置命名空间
加载顺序:
1.内置空间
2.全局空间
3.局部空间
作用域:就是作用的范围,按照生效范围来分为全局作用域和局部作用域
全局作用域:包含命名空间和全局命名空间 在整个文件的任何位置都可以使用(遵循从上到下逐步执行)
局部作用域:在函数内部可以使用
globals() 查看全局变量
locals() 查看局部变量
a = 10 def func(): a = 40 b = 20 def abc(): print("哈哈") print(a, b) # 这里使用的是局部作用域 print(globals()) # 打印全局作用域中的内容 print(locals()) # 打印局部作用域中的内容 abc() func()
结果:
哈哈
40 20
{‘__name__‘: ‘__main__‘, ‘__doc__‘: None, ‘__package__‘: None, ‘__loader__‘: <_frozen_importlib_external.SourceFileLoader object at 0x00000000006B5A20>, ‘__spec__‘: None, ‘__annotations__‘: {}, ‘__builtins__‘: <module ‘builtins‘ (built-in)>, ‘__file__‘: ‘C:/Users/Administrator/PycharmProjects/untitled/函数复习.py‘, ‘__cached__‘: None, ‘a‘: 10, ‘func‘: <function func at 0x00000000003B1E18>}
{‘b‘: 20, ‘a‘: 40
修改全局变量:
a = 10 def func(): def abc(): global a #声明修改全局变量a a = 22 #对a进行修改 print(a) abc() func() print(a) 结果: 22 22
global修改全局变量 但是只能在局部修改 在全局会报错
a = 10 def func(): a = 22 def abc(): nonlocal a #声明父类离得最近的非全局变量a a =66 #对a进行修改 print(a) abc() print(a) func() print(a) 结果: 66 66 10
nolocal修改父类离得最近的非全局的变量
以上是关于名称空间的主要内容,如果未能解决你的问题,请参考以下文章
PHP命名空间的三种引用方式:非限定名称限定名称完全限定名称