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] |
'코딩 > Python' 카테고리의 다른 글
파이썬으로 구글 API 활용하기 예제/애드센스(Adsense) 보고서 데이터 불러오기 (7) | 2022.01.01 |
---|---|
파이썬으로 공공데이터포털(data.go.kr) 오픈 API 활용하기 예제/국세청 사업자등록 상태 조회 (0) | 2021.12.29 |
if __name__ == "__main__"은 왜 쓰는 걸까? (0) | 2021.12.27 |
스마트폰에서 파이썬(Python) 코딩 및 주피터노트북 사용하는 방법/termux, 태블릿, 안드로이드 (0) | 2021.12.11 |
삼성인터넷(안드로이드) 업데이트 후 주피터노트북 커널 연결 오류 발생시 해결법 (0) | 2021.11.29 |
댓글