본문 바로가기
코딩/Python

for 반복문을 이용해 전역 변수(global variable) 여러 개를 한번에 선언하는 방법

by 나홀로코더 2021. 12. 27.
반응형

for 반복문을 이용해서 여러 개의 변수를 한번에 선언하는 방법을 소개한다.

 

예를 들어 아래와 같이 리스트 안의 각 요소들을 변수_1, 변수_2, 변수_3에 저장하고 싶다고 가정하자.

 

list = [1, 2, 3]   ==>  변수_1 = 1      변수_2 = 2     변수_3 = 3

 

for문을 이용해 변수들을 한번에 지정하려면 globals() 함수를 사용하면 된다.

 

globals 함수는 호출 시점 현재 모든 전역 변수의 이름과 값을 딕서너리로 보여주는 함수이다.

 

예를 들어 파이썬을 실행하고 1과 2를 각각 a와 b 변수로 선언한 뒤에 globals()를 실행하면, 아래와 같은 결과물이 출력된다. 따로 선언하지 않아도 생성되는 변수들이 앞에 나오고, 맨 뒤에 새로 선언한 a와 b가 보인다.

 

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': 1, 'b': 2}

 

여기에서 소개할 방법은 바로 이 딕셔너리에다 새로운 키와 값을 추가하는 방법이다.

 

list = [1, 2, 3]

for i in list:
	globals()['변수_{}'.format(i)] = i

 

위의 코드를 말로 설명해보면, 둘째 줄은 list의 각 요소들을 순회하라는 것이고, 셋째 줄은 globals()로 불러온 딕셔너리에다가 '변수_{}'.format(i)를 키로, i를 값으로 각각 저장하라는 것이다.

 

format 함수에 대해서는 앞서 소개한 문자열 포맷팅에 관한 게시글을 참조하기 바란다.

 

파이썬 문자열 포맷팅 방법/f-string과 format 함수

 

위 코드를 실행하고 다시 globals() 함수를 실행해보면 아래와 같은 딕셔너리가 출력된다.

 

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'list': [1, 2, 3], 'i': 3, '변수_1': 1, '변수_2': 2, '변수_3': 3}

 

당연히 print(변수_1) 등으로 값을 출력할 수도 있다.

 

여기에서 일어나고 있는 일은 기본적으로 아래에서 일어나는 일과 같다. 딕셔너리 뒤에다 대괄호를 붙여 그 안에다 키를 넣어 주고, 등호 오른쪽에다 값을 넣어 주면, 이미 같은 키가 있을 경우에는 해당 값을 업데이트하고, 없을 경우에는 새로운 키와 값을 추가하는 것이다.

 

>>> dic = {}
>>> dic["a"] = 1
>>> dic
{'a': 1}

 

[참고]
사실 위 예제는 아래 처럼 하면 간단히 해결이 된다. 여기에서 소개하는 방법의 실제 활용례는 예제보다는 복잡한 경우가 될 것이다.
변수_1, 변수_2, 변수_3 = [1, 2, 3]

 

반응형

댓글