Python动态创建变量

2019-06-27  本文已影响0人  Bug2Coder

命名空间
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] = ()

各自的方法都可以正常使用

上一篇 下一篇

猜你喜欢

热点阅读