1. locals()함수와 globals()함수

파이썬에서 동적으로 변수를 생성하려면 locals()함수나 globals()함수를 사용해야 합니다.

locals()함수는 현재 local변수들을 딕셔너리형태로 return합니다.

globals()함수는 현재 global 변수들을 딕셔너리 형태로 return합니다.

아래 코드와 결과를 보고 잘 이해가 가지 않으시면 바로 2번으로 넘어가셔도 됩니다.

def localTest():
    localVar1 = "Hi"
    localVar2 = 200
    localVar3 = [40, 50, 60]
    
    print("globals() in function\n", globals(), "\n")
    # 결과 : {생략, 'globalVar1': 'Hello', 'globalVar2': 100, 'globalVar3': [10, 20, 30]}
    
    print("locals() in function\n", locals(), "\n")
    # 결과 : {'localVar1': 'Hi', 'localVar2': 200, 'localVar3': [40, 50, 60]} 

globalVar1 = "Hello"
globalVar2 = 100
globalVar3 = [10, 20, 30]

print("globals() in main\n", globals(), "\n")
# 결과 : {생략, 'globalVar1': 'Hello', 'globalVar2': 100, 'globalVar3': [10, 20, 30]}

print("locals()in main\n", locals(), "\n")
# 결과 : {생략, 'globalVar1': 'Hello', 'globalVar2': 100, 'globalVar3': [10, 20, 30]}

localTest()

 

 

 

2. 파이썬 동적으로 변수 생성하기 (for문으로 변수 생성하기)

사용하려는 목적에 따라 globals()함수와 locals()함수 중 선택하면 됩니다.

예제는 globals() 함수로 작성하였습니다.

globals()['test'] = 100	# {'test': 100} item 추가
print(globals())
# 결과 : {생략, 'test': 100}

globals()함수는 현재 global 변수들을 딕셔너리 형태로 return하므로,

기존 딕셔너리와 같은 방법으로 itme을 추가할 수 있습니다.

위의 예제는 {'test': 100} item을 추가하는 예제입니다.

 

for i in range(1, 4):
	globals()['test' + str(i)] = i * 10
	# globals()['test{}'.format(i)] = i * 10

print(globals())
# 결과 : {생략, 'test1': 10, 'test2': 20, 'test3': 30}

print(test1, test2, test3)
# 결과 : 10 20 30

이를 응용하면 for문으로 변수를 생성할 수 있습니다.

2번 라인에서 문자열 'test'와 변수 i를 str로 바꾼 것을 합쳐서 key로, i * 10을 value로 해서 item을 추가합니다.

2번 라인을 format()함수를 사용하면 3번 라인처럼 표현할 수도 있습니다.

5번 라인의 결과처럼 test1, test2, test3 변수가 생성됐고,

8번 라인의 결과처럼 각각의 값에는 10, 20, 30이 저장됩니다.

 

+ Recent posts