IT일반

파이썬 프로그래밍, 변수, 전역변수와 지역변수에 대하여

IT하는 으노 2024. 12. 11. 17:00
반응형

전역변수와 지역변수

변수가 그 영향을 미칠 수 있는 범위에 따라 전역변수 또는 지역변수로 구분한다. 전역변수는 전체영역에 사용되는 변수를 뜻한다. 영어로는 global variable이라고 한다. 반면에 지역변수는 특정 지역에서만 지엽적으로 사용되는 변수를 말한다. 영어로는 local variable이다. 짧은 프로그래밍을 할 때는 크게 문제가 되지 않지만, 함수가 많아지고 변수의 개수가 많아지면 전역변수와 지역변수의 잘못된 적용으로 오류가 생길 수 있다. 전역변수와 지역변수의 사용에 대해 살펴보자.​

<코드1>

이 코드의 실행 결과 5가 출력된다. 다음 코드는 어떨까.

<코드2>

 코드 실행 결과 2가 출력된다.

<코드1>에 사용된 a는 메인코드에서 사용되어 함수에서도 적용이 되는 전역변수에 해당한다. 그래서 prtVar()함수 내에 a가 선언되지 않아도 전역변수로 선언된 a를 호출하여 5가 출력되었다.

반면, <코드2>에도 5번 줄에 전역번수 a가 선언되어 5라는 값을 갖고 있었지만, prtVar()내부에 선언된 지역변수 a가 동일한 이름으로 선언되었다. 이러한 경우에 3번 줄의 print(a)는 함수 호출 이후 a에 값을 할당한 2번 줄에 의해 2를 출력하게 된다.

<코드3>

6번 줄에서 prtVar()함수를 호출하고 a = 2라는 변수 할당 명령어를 수행했지만, 7번 줄의 print(a)의 실행 결과 출력되는 값은 5이다. 즉 2번줄에서 함수 내에 선언된 지역변수 a는 메인코드에 영향을 주지 못했다는 뜻이다. 지역변수는 이렇게 자신이 포함된 영역에서만 영향을 미칠 수 있는 변수를 말한다.

만약에 함수 안에 사용되는 변수를 전역변수로써 사용하고 싶다면 global 키워드를 함께 선언하자.

<코드4>

이 코드의 실행결과는 2이다. 함수 내부의 변수가 메인 코드에도 영향을 미친 것이다. global 키워드를 이용해 함수 내부의 a도 전역변수로써의 지위를 가졌기 때문이다. 주의할 것은 global a는 별도로 선언해야 한다. 선언과 할당이 함께 이루어지지 못한다. 즉, global a = 2 와 같이 쓸 수 없다.

사실 무엇보다도 좋은 것은, 지역변수와 전역변수 중 어느것이 좋다의 개념은 아니기 때문에 그 쓰임새를 이해하고 적절하게 사용하는 것이다. 또한 적절하게 사용하기 위해 변수의 이름을 구분할 수 있도록 붙여주는 것도 중요하다.

반응형