背景
一、什么是命名空间
命名空间其实就是一个字典 dict,通过键值的方式来存储作用域中的变量名和变量值。即: dict = {'变量名1': '变量值1', '变量名2': '变量值2', ...}
。
二、命名空间的作用
由于命名空间是一个字典,可以通过 python 内置的字典操作方式来访问命名空间里的变量名和变量值。
三、命名空间的使用
使用方法:
1
2
| # 定义一个字典类型的对象来指向当前命名空间
locals()
|
使用技巧
一、全局作用域
1
2
3
4
5
6
7
8
9
10
11
12
13
| a = 1
b = 2
# 定义一个变量接收全局命名空间里的变量名和变量值
global_namespace = locals()
print(type(global_namespace)) # <class 'dict'>
# 访问全局命名空间中的变量的值
print(global_namespace['a']) # 1
# 向全局命名空间中添加一对键值
global_namespace['c'] = 3
print(global_namespace)
|
二、局部作用域
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| def test():
a = 3
b = 4
c = 5
# 定义一个变量接收局部命名空间里的变量名和变量值
local_namespace = locals()
return local_namespace
# 定义一个变量获取局部命名空间中所有的变量名和变量值
local_test = test()
print(local_test) # {'a': 3, 'b': 4, 'c': 5}
# 向局部命名空间中添加一对键值
local_test['d'] = 6
print(local_test) # {'a': 3, 'b': 4, 'c': 5, 'd': 6}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| class TestNameSpace(object):
def test(self):
a = 3
b = 4
c = 5
local_namespace = locals()
return local_namespace
if __name__ == '__main__':
test_namespace = TestNameSpace()
test_local = test_namespace.test()
print(test_local) # {'self': <__main__.TestNameSpace object at 0x7f870bed6d90>, 'a': 3, 'b': 4, 'c': 5}
print(test_local['c']) # 5
test_local['d'] = 6
print(test_local) # {'self': <__main__.TestNameSpace object at 0x7f870bed6d90>, 'a': 3, 'b': 4, 'c': 5, 'd': 6}
|