1. 지양해야 할 방법 : 전역변수로 구현
data = {}
for i in range(3):
globals()['var_{i}'] = i * 10
globals()을 이용해서 전역변수로 처리해 버리는 방식.
globals()[ '변수 1' ]이라고 코딩하면 '변수 1'이 전역변수로 설정할 수 있다.
애초에 globals()[ ] 이게 globals의 사용 용법인 듯하다.
그러나 비추하는 방식이라고 한다.
비추하는 이유는
1) 유지보수가 어렵다.
2) 디버깅과 IDE 자동완성이 어렵다.
3) 메모리 사용이 비효율적이다.
cf) 전역 변수 관리 방식
전역 변수는 모듈 수준에서 관리되며, 전역 네임스페이스 자체가 해시 테이블로 동작한다.
그러나 전역 변수는 단순히 값 저장만 하는 것이 아니라, 다음과 같은 값들도 같이 저장하게 된다.
- 이름(name): 문자열 키 관리.
- 타입(type): 변수의 타입 정보.
- 참조(reference): 메모리 주소 참조.
- 스코프(scope): 접근 가능한 범위 기록.
- 값
따라서 상대적으로 많은 메모리와 처리 비용이 발생하게 된다.
2. 권장하는 방법 : 딕셔너리 사용, 리스트 사용, 판다스 데이터 프레임 사용
1) 딕셔너리 사용
data = {}
for i in range(3):
data[f'var_{i}'] = i * 10
이 방법을 추천한다.
추천의 이유는 value에 그 어떠한 타입의 데이터나 심지어 구조화된 데이터도 집어넣을 수 있기 때문이다.
이 이유면 충분하다.
#Example
data = {}
data['int'] = 10
data['float'] = 3.14
data['string'] = 'Hello'
data['list'] = [1, 2, 3]
data['dict'] = {'a': 1, 'b': 2}
data['function'] = lambda x: x * 2
print(data['list']) # [1, 2, 3]
print(data['dict']['a']) # 1
2) 리스트 사용
values = []
for i in range(3):
values.append(i * 10)
3) 판다스 데이터 프레임 사용
data = pd.DataFrame()
for i in range(3):
data[f'var_{i}'] = [i * 10]
'Programming' 카테고리의 다른 글
Python 딕셔너리의 메모리 관리 구조(a.k.a hash table) (0) | 2024.12.28 |
---|---|
오버헤드(Overhead)란? (Feat 전역변수 vs 딕셔너리) (1) | 2024.12.28 |
Python에서 반복문을 활용한 동적 변수 생성 및 관리 2. (딕셔너리 최고) (0) | 2024.12.28 |