반응형
동적 변수명
비슷한 변수명을 반복적으로 사용한다거나, for문으로 val1, val2, ... 처럼 규칙적인 변수를 정의하는 등의 상황에서 활용하는 방법이 있다. 바로 동적으로 변수를 생성하고 사용하는 것이다. 반복문 뿐만 아니라 규칙적인 변수 사용에 있어서 꽤 효과적이다. 오늘은 그런 역할을 하는 python 내장함수인 globals()와 locals()를 소개하고자 한다.
globals()
현재 global 변수들(전역 변수)을 딕셔너리 형태로 return한다.
전역 변수는 파일 어디에서든 읽을 수 있지만 함수 안에서는 수정할 수 없다. 수정하고 싶다면 해당 변수가 전역 변수임을 명시해주어야 한다.
globals 공식 문서 https://docs.python.org/3.10/library/functions.html#globals
locals()
현재 local 변수들(지역 변수)을 딕셔너리 형태로 return 한다.
지역 변수는 자신이 선언된 함수 내에서만 사용 가능하고 함수 밖에서는 읽지도 사용하지도 못한다.
locals 공식 문서 https://docs.python.org/3.10/library/functions.html#locals
예시
def func():
a = 'hello'
b = 100
print(f'func-global variables: {globals()}')
print(f'func-local variables: {locals()}')
a = 'hi'
b = 200
func()
print(f'global variables: {globals()}')
print(f'local variables: {locals()}')
output >>>
func-global variables: {..., 'a': 'hi', 'b': 200}
func-local variables: {'a': 'hello', 'b': 100}
global variables: {..., 'a': 'hi', 'b': 200}
local variables: {..., 'a': 'hi', 'b': 200}
활용
- 현재 프로그램의 파일명 확인하기
print(globals()['__file__'])
output >>>
e:\{user}\test\global_local_test.py
- fstring으로 동적 변수명 할당하기
tmp = 'first'
globals()[f'value_{tmp}'] = 1
print(value_first)
output >>>
1
- 반복문과 fstring을 활용하여 동적 변수명 할당하기
for i in range(10):
globals()[f'val_{i}'] = i*100
print(globals()[f'val_{i}'])
output >>>
0
100
200
300
400
500
600
700
800
900
반응형
'Python' 카테고리의 다른 글
[python] anaconda 설정 (0) | 2023.08.16 |
---|---|
[python] multiprocessing 사용법 (0) | 2023.08.14 |
[python error] pandas.read_excel TypeError: got an unexpected keyword argument (1) | 2023.08.08 |
[python] datetime resample, groupby with Grouper (0) | 2023.08.07 |
[python] pandas.DataFrame.round 반올림 (0) | 2023.08.06 |