본문 바로가기

Programming/Python Tutorials

[PYTHON 3] Tutorials 14. Variable Scope

안녕하세요. 이번 시간에는 변수의 범위에 대해서 알아보고자 합니다. 변수의 범위에는 크게 지역변수(Local)와 전역변수(Global)가 있습니다. 지역변수는 특정지역(?)에서만 유효한 경우를 일컬으며, 전역변수는 말 그대로 어디서든 사용 가능한 변수를 말합니다. 말보다는 그림을 보면서 진행하는게 좋겠죠? 그럼 시작하겠습니다.


우선 임의의 숫자를 number 라고 하는 변수에 지정을 해 주었습니다.

역시 임의의 함수 abcd라고 하는 함수를 정의하고 단순히 number 를 프린트 하는 명령어만 가지고 있게 하였습니다.



이번에는 또 다른 함수 xyz 를 정의하고 역시 변수 number 를 출력하게 하였습니다.

두 함수를 정의하였으니 호출하여 사용을 해봐야겠죠? 위 그림과 같이 두 함수를 나란히 호출하였습니다. 결과는 어떻게 될까요?

네.. 위 그림처럼 둘 다 1234 라는 변수 number 안의 값을 출력해주고 있네요. 왜 그럴까요? 여기서 변수 number 는 전역변수(global)로 정의되어 있기 때문에 아무곳에서나 불러 쓰면 된다는 것입니다. 그럼 지역변수로 바꾸면 어떻게 될까요? 아래 예제를 보겠습니다.

함수 밖에서 정의된 number 를 함수 안으로 옮겨다 놓았습니다. 즉 abcd 함수안에 변수 number 를 정의하고 출력하게 하였고, 다른 함수는 종전과 마찬가지로 단순히 출력만 하게 하였습니다. 이때 결과는 어떻게 될까요? 추측을 해보시기 바랍니다.

결과에서 오류가 나오고 있네요. 왜 이럴까요? 그런데 결과 콘솔을 보시면 1234라고 하는 숫자가 한번 나오고 있는게 보입니다. 이 결과는 위의 함수 abcd의 결과를 나타내는 것입니다. 무슨말이냐면, 함수 abcd가 호출되었을때 숫자 1234가 할당된 변수 number 값을 가지게 되고 이를 출력하게 한 것입니다. 그런다음 함수 xyz가 호출되었는데, 이 때는 출력할 변수 number 값을 찾지 못하는 것입니다. 즉, 함수 밖에서 선언된 변수는 전역이어서 함수 밖에서든 다른 함수에서든 가져다 쓸 수 있는 값인 반면에, 함수 안에서 선언된 변수(로컬)는 다른 함수에서 가져다 쓸 수가 없다는 것입니다. 요약하자면, 함수안에서 정의된 값은 다른 함수에서 쓸 수가 없다 입니다. 물론 나중에 이를 꼼수(?)를 사용해서 사용할 수 있게 할 수도 있지만, 현재로서는 없다고 알아 두시면 됩니다. 

여기까지 변수의 범위: 전역변수, 지역변수에 대해서 알아 보았습니다. 수고하셨습니다.