본문 바로가기
컴퓨터관련/Python

python에서의 전역변수와 지역변수

by 빛과 어둠사이 2021. 4. 7.
728x90
반응형
SMALL

오늘은 파이썬에서의 전역변수와 지역변수에 대해서

정리를 해보고자 합니다.

전역변수와 지역변수는 다른 프로그래밍 언어에서도

다 있는 개념이고, 

다 사용을 하는 것입니다.

그래서 개념이나 그런 것도 다 동일합니다.

 

 

지역변수는 해당 지역

즉, 함수 클래스 등

선언한 부분에서만 사용이 가능한 것입니다.

그리고 전역변수는 해당 프로그램 전체에서

사용이 가능한 것입니다.

 

 

실제 사용 예제를 보면서

다시 확인해보도록 하겠습니다.

 

a = 100 #전역변수
def tmp() :
    print(a) #값 출력

tmp() #함수호출
print(a) #전역변수값 출력

위와 같이 소스를 작성하였습니다.

위 소스에 주석을 달아놓기는 했는데

다시 한번 설명을 해보도록 하겠습니다.

 

우선, a라는 전역변수를 선언하였습니다.

그리고 tmp라는 함수를 선언하고, 거기서 a라는 변수를 출력하도록 하였습니다.

그 이후, tmp함수 호출을 하고

마지막으로 a 변수값을 다시 출력하도록 해놓은 것입니다.

 

 

위와 같이 소스를 작성하고

실행을 하게 되면

결과는 아래처럼 나오게 됩니다.

 

위처럼 나오게 됩니다.

 

즉, tmp함수 안에서도 전역변수 a를 가져오기 때문에

100이 출력이 되는 것이고,

tmp함수 밖에서도 전역변수 a값을 출력하기 때문에

100이 출력이 되는 것입니다.

 

 

 

 

그럼 이번에는 지역변수에 대해서

확인을 해보도록 하겠습니다.

a = 100 #전역변수
def tmp() :
    a= 1 #지역변수
    print(a) #값 출력

tmp() #함수호출
print(a) #전역변수값 출력

위와 같이 코딩을 하였습니다.

맨 위 소스와 거의 동일합니다.

다만, 다른것이 있다면

tmp함수 안에 a라는 변수를 다시 1로 초기화 하는 것입니다.

 

이 때, tmp함수 안에서의 a는 지역변수가 되는 것입니다.

그래서 tmp함수 안에서만 a는 1을 저장하고 있게 되는 것입니다.

 

위와 같이 코딩을 하고

실행을 하게 되면

결과는 아래처럼 나오게 됩니다.

 

위처럼 tmp 함수 안에서는 a는 1로 나오고

tmp함수 밖에서는 a는 100으로 되는 것을

확인할 수 있습니다.

 

 

 

 

 

그럼 tmp함수 안에서

전역변수 a의 값을 변경하고 싶다면??

그 땐 어떻게 해야 될까요?

위처럼 a값을 그냥 바꾸게 된다면

지역변수로 선언이 되기 때문에

그냥 사용을 할 수는 없습니다.

 

그 때, 사용하는 것이 global 입니다.

global명령어를 쓰게 된다면,

전역변수를 사용한다는 것입니다.

 

실제 사용 예제를 확인해보도록 하겠습니다.

a = 100 #전역변수
def tmp() :
    global a #전역변수를 사용하겠다고 선언
    a= 1 #지역변수
    print(a) #값 출력

tmp() #함수호출
print(a) #전역변수값 출력

위처럼 소스를 작성하였습니다.

두번째 예제 소스와 거의 동일합니다.

다만, tmp함수에서 a 값을 변경하기 전에

global 명령어를 이용해서

a라는 전역변수를 사용하겠다고 한 것입니다.

그리고 a라는 값을 변경하는 것입니다.

 

위처럼 소스를 작성하고 실행을 하게 된다면

결과는 아래처럼 나오게 됩니다.

위처럼 나오게 됩니다.

tmp 함수 안에서 a변수에 대한

값을 변경을 하였습니다.

그런데 tmp함수 밖에서도 a값이 변경된 대로

사용이 되는 것을

확인할 수 있습니다.

 

 

 

 

그러면 여기서 드는 궁굼증!

a라는 변수를 미리 선언하지 않고,

tmp함수 안에서 global명령어를 이용해서 변순를 선언한다면?

그 땐 어떻게 될까요?

그래서 한번 아래처럼 코딩을 해보았습니다.

 

#a = 100 #전역변수
def tmp() :
    global a #전역변수를 사용하겠다고 선언
    a= 1 #지역변수
    print(a) #값 출력

tmp() #함수호출
print(a) #전역변수값 출력

위처럼 코딩을 하였습니다.

a변수를 100으로 생성 및 초기화 한 것을

주석처리 하였습니다.

주석처리를 하였기 때문에 지운 것과 동일하죠.

그리고 tmp 함수 안에서 a를 선언하고 1로 초기화를 한 것입니다.

 

위처럼 코딩을 하고 실행을 하면

결과는 어떻게 나올까요?

한번 해보도록 하겠습니다.

 

위처럼 결과가 나오는 것을 확인할 수 있습니다.

tmp 함수 안에서 a라는 전역변수가 선언이 된 것을

확인할 수 있습니다.

 

즉, global 함수를 이용하면

전역변수를 사용 혹은 선언을 하는 것으로

볼 수 있을 것 같네요.

 

 

 

 

 

오늘은 python에서의 전역변수와 지역변수에 대해서

정리를 해보았습니다.

저는 기존에 java를 사용했었는데

전역변수와 지역변수의 개념은 java와도 동일합니다.

 

 

보통 지역변수를 많이 사용하긴 하는데

전역변수도 간혹 사용을 하기 때문에

알고 있으면 좋을 것 같습니다.

 

 

이상으로 파이썬에서의 전역변수 및 지역변수에 대한

정릴였습니다~

 

 

 

 

 

 

 

 

 

혼자 공부하는 파이썬:파이썬 최신 버전 반영

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

 

 

 

 

 

728x90
반응형
LIST