Python/Study

python 기초 - 지역변수, 전역변수, 동적변수 (local, global, globals 등)

pybi 2023. 1. 15. 15:14

이번 편에서는 지역변수와 전역변수에 대해 알아보고자 한다.

지역변수는 뭐고 전역변수는 뭘까?  말 그대로 지역 변수란 함수 내에서만 쓸 수 있는 변수이며, 전역 변수는 해당 함수 뿐만 아니라 모든 곳에서 쓸 수 있는 변수이다.

 

매번 그렇듯 간단한 예제와 함꼐 알아보자.

처음 나오는 변수는 전역변수이고, 함수에서 정의한 지역변수이다. 따라서 함수를 실행시키고 변수값을 확인해도 처음에 설정한 10이 출력된다.

local_value = 10

def local():
    local_value = 20

local()
print(local_value)
10

 

 

이번에도 마찬가지로 함수에서 생성한 지역 변수는 함수에서만 20이 적용되고 밖으로 나오면 다시 10이 출력된다.

local_value = 10

def local():
    local_value = 20
    print(local_value)

local()
print(local_value)
20
10

 

 

만약 함수애서 아무것도 입력하지 않으면? 기존의 전역 변수 값이 그대로 적용되는 것을 알 수 있다.

local_value = 10

def local():
    print(local_value)

local()
print(local_value)
10
10

 

 

그런데 만약 함수에서도 전역 변수를 사용하고 싶다면? 그럴떄는 global이란 것을 사용한다.

아래는 전역 변수값이 10이었지만 함수를 실행시키면서 전역 변수값이 15로 변경된것을 알 수 있다.

local_value = 10

def local():
    global local_value
    local_value = 15
    
local()
print(local_value)
10

 

 

전역 함수 관련해서 아래처럼 globals도 활용 가능하다. 이렇게 하면 globals()다음에 나오는 string을 전역 변수로 설정할 수 있다.

local_value = 10

def local():
    globals()["local_value"]=15
    
local()
print(local_value)
15
15

 

 

마지막으로 globals()를 이용하면 반복문을 이용해서 변수 생성도 가능하다. 잘 쓰이지는 않겠지만 사용하면 편리하다.

(f string도 적용이 된다. globals()[f"global_{i}"]= 15)

def local():
    for i in range(1,5):
        globals()["global_{}".format(i)]= 15
    
local()
print(global_1)
print(global_2)
15
15

 

그리고 당연히 아래처럼도 사용 가능하다.

def local():
    for i in range(1,5):
        globals()["global_"+str(i)]= 15

 

 

혹시 더 추가할만한 내용이 있으면 추후에 추가하도록 하겠다.

끝!