命名空间
locals() 局部命名空间
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000000000211C240>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:/Users/Administrator/Desktop/Y_Project/test.py', '__cached__': None}
globals() 全局命名空间
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000000001D9C240>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:/Users/Administrator/Desktop/Y_Project/test.py', '__cached__': None}
创建局部变量--全局不能使用
def A():
names = locals()
for i in range(5):
names['a%s' % i] = i
for i in range(5):
print(names['a%s' % i])
print(names['a1'])
def B():
print(names['a1'])
A()
B()
结果:
0
1
2
3
4
5
1
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/test.py", line 14, in <module>
B()
File "C:/Users/Administrator/Desktop/test.py", line 11, in B
print(names['a1'])
NameError: name 'names' is not defined
创建全局变量--适用于类内部方法间的使用
def A():
global names
names = globals()
for i in range(5):
names['a%s' % i] = i
for i in range(5):
print(names['a%s' % i])
print(names['a1'])
print('A')
def B():
print('B')
print(names['a1'])
A()
B()
结果:
0
1
2
3
4
1
A
B
1
创建各种数据类型
列表:
names['a%s'%i] = []
字典:
names['a%s'%i] = {}
集合:
names['a%s'%i] = set()
元组:
names['a%s'%i] = ()
各自的方法都可以正常使用
网友评论