파이썬에서 변수는 크게 전역 변수(global variable)와 지역 변수(local variable), 두 가지 유형으로 나뉩니다.
전역 변수의 유효 범위(scope)는 프로그램 전체에 적용되는 반면, 지역 변수의 유효 범위는 해당 변수가 정의된 함수 내부로 한정됩니다.
def func():
x = "Python"
print(x)
print(s)
s = "Tutorialspoint"
print(s)
func()
print(x)위 프로그램에서 x는 지역 변수이고 s는 전역 변수입니다. 지역 변수는 자신이 정의된 함수(func()) 내부에서만 접근할 수 있으며, 범위를 벗어나 접근하려 하면 오류가 발생합니다. 반면 전역 변수는 함수 내부를 포함하여 프로그램 어디에서든 호출할 수 있습니다.
지역 변수(Local Variables)
지역 변수는 자신이 속한 범위(예: 위 예제의 func()) 내부에서만 접근할 수 있습니다.
아래 프로그램에는 x와 y라는 두 개의 지역 변수가 사용되었습니다.
def sum(x, y):
total = x + y
return total
print(sum(5, 10))실행 결과
15
변수 x와 y는 함수 sum() 내부에서만 유효하며, 함수 외부에는 존재하지 않습니다. 따라서 지역 변수를 자신의 범위 밖에서 사용하려 하면 NameError가 발생합니다. 예를 들어 아래 코드는 실행되지 않습니다.
print(x)
전역 변수(Global Variables)
전역 변수는 유효 범위가 프로그램 전체이므로 코드 어디에서든 사용할 수 있습니다.
간단한 예제를 통해 전역 변수를 이해해 보겠습니다.
z = 25
def func():
global z
print(z)
z = 20
func()
print(z)실행 결과
25 20
func()를 호출하면 global 키워드를 통해 함수 내부에서 전역 변수 z의 값이 변경되며, 이 변경 사항은 프로그램 전체에 적용됩니다.
아래 예제는 지역 변수, 전역 변수, 함수 매개변수가 함께 사용된 경우를 보여줍니다.
def func(x, y):
global a
a = 45
x, y = y, x
b = 33
b = 17
c = 100
print(a, b, x, y)
a, b, x, y = 3, 15, 3, 4
func(9, 81)
print(a, b, x, y)실행 결과
45 17 81 9 45 15 3 4
결과 해설
첫 번째 출력(45 17 81 9): a는 global로 선언되어 45로 변경되었고, b는 함수 내부의 지역 변수로 17이 할당되었습니다. 매개변수 x와 y에는 각각 9와 81이 전달된 후 서로 값이 교환되어 81과 9가 출력됩니다.
두 번째 출력(45 15 3 4): 함수 실행 후 a는 전역 변수이므로 함수 내부에서 변경된 값 45가 유지됩니다. 반면 b, x, y는 함수 내부의 변경이 전역 값에 영향을 주지 못해 처음 할당된 15, 3, 4가 그대로 출력됩니다.
이처럼 global 키워드를 사용하면 함수 내부에서 전역 변수를 수정할 수 있지만, 남용하면 코드의 가독성과 유지보수성이 떨어질 수 있으므로 신중하게 사용하는 것이 좋습니다.