사용법

globals() 메서드를 통해 유동적 변수 생성이 가능하다.
아래는 예시이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
id_list = ['muzi', 'neo', 'frodo']

for i, id_ in enumerate(id_list):
  globals()[id_ + '_num'] = i + 1

print('muzi : ', muzi_num)
# 출력 결과 => muzi : 1
print('neo : ', neo_num)
# 출력 결과 => neo : 2
print('frodo : ', frodo_num)
# 출력 결과 => frodo : 3



원리

globals()는 전역 변수를 담고 있는 dictionary 형태의 자료이다.
이를 출력하면 아래와 같다.

1
2
3
4
5
6
7
8
9
id_list = ['muzi', 'neo', 'frodo']

for i, id_ in enumerate(id_list):
  globals()[id_ + '_num'] = i + 1

print(globals())
###### 출력 결과 ######
# {..., 'muzi_num': 1, 'neo_num': 2, 'frodo_num': 3, ...}



globals() 전체 출력 내용

1
{'__name__': '__main__', '__doc__': 'Automatically created module for IPython interactive environment', '__package__': None, '__loader__': None, '__spec__': None, '__builtin__': <module 'builtins' (built-in)>, '__builtins__': <module 'builtins' (built-in)>, '_ih': ['', "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint(muzi_num)\n# 출력 결과 : 1\nprint(neo_num)\n# 출력 결과 : 2\nprint(frodo_num)\n# 출력 결과 : 3", "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3", "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3\n\nprint(globals())", "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3\n\nprint(globals()['frodo_num'])", "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3\n\nprint(globals())"], '_oh': {}, '_dh': [PosixPath('/Users/jongya/Desktop/Workspace/Workspace_SeSAC/pythonDir')], 'In': ['', "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint(muzi_num)\n# 출력 결과 : 1\nprint(neo_num)\n# 출력 결과 : 2\nprint(frodo_num)\n# 출력 결과 : 3", "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3", "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3\n\nprint(globals())", "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3\n\nprint(globals()['frodo_num'])", "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3\n\nprint(globals())"], 'Out': {}, 'get_ipython': <bound method InteractiveShell.get_ipython of <ipykernel.zmqshell.ZMQInteractiveShell object at 0x10796bf10>>, 'exit': <IPython.core.autocall.ZMQExitAutocall object at 0x1079b0790>, 'quit': <IPython.core.autocall.ZMQExitAutocall object at 0x1079b0790>, 'open': <function open at 0x106460af0>, '_': '', '__': '', '___': '', '__session__': '/Users/jongya/Desktop/Workspace/Workspace_SeSAC/pythonDir/Untitled.ipynb', '_i': "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3\n\nprint(globals()['frodo_num'])", '_ii': "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3\n\nprint(globals())", '_iii': "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3", '_i1': "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint(muzi_num)\n# 출력 결과 : 1\nprint(neo_num)\n# 출력 결과 : 2\nprint(frodo_num)\n# 출력 결과 : 3", 'id_list': ['muzi', 'neo', 'frodo'], 'i': 2, 'id_': 'frodo', 'muzi_num': 1, 'neo_num': 2, 'frodo_num': 3, '_i2': "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3", '_i3': "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3\n\nprint(globals())", '_i4': "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3\n\nprint(globals()['frodo_num'])", '_i5': "id_list = ['muzi', 'neo', 'frodo']\n\nfor i, id_ in enumerate(id_list):\n    globals()[id_ + '_num'] = i + 1\n\nprint('muzi : ', muzi_num)\n# 출력 결과 : 1\nprint('neo : ', neo_num)\n# 출력 결과 : 2\nprint('frodo : ', frodo_num)\n# 출력 결과 : 3\n\nprint(globals())"}