[파이썬] 함수의 지역 변수와 전역 변수

파이썬에서 변수는 전역 변수(global variable)와 지역 변수(local variable)로 나뉩니다. 함수 내부에서 선언된 변수는 지역 변수이고, 함수 외부에서 선언된 변수는 전역 변수입니다. 알아두어야 할 것은 전역 변수는 프로그램 전체에서 접근 가능하지만, 지역 변수는 해당 함수 내에서만 접근 가능하다는 것입니다.

지역 변수(Local Variable)

지역 변수는 함수 내부에서 선언된 변수로, 해당 함수 내에서만 접근할 수 있습니다. 함수가 호출되면 지역 변수가 생성되고, 함수가 실행을 마치면 해당 변수는 사라지게 됩니다. 예시를 통해 이해해보겠습니다.

def my_function():
    x = 10
    print("x inside function:", x)

my_function()
print("x outside function:", x)  # 에러 발생

# 출력 결과:
# x inside function: 10
# NameError: name 'x' is not defined

위 예시에서 xmy_function 함수 내에서 선언된 지역 변수입니다. 함수 내부에서 x를 출력하면 10이라는 값이 출력됩니다. 그러나 함수 외부에서 x를 출력하면 NameError: name 'x' is not defined라는 오류가 발생합니다. 지역 변수는 해당 함수 내에서만 유효하기 때문에 함수 외부에서는 접근할 수 없는 것입니다.

전역 변수(Global Variable)

전역 변수는 함수 외부에서 선언된 변수로, 프로그램 전체에서 접근할 수 있습니다. 함수 내부에서도 전역 변수에 접근할 수 있지만, 이때는 global 키워드를 사용해야 합니다. 예시를 통해 살펴보겠습니다.

x = 10

def my_function():
    global x
    x += 5
    print("x inside function:", x)

my_function()
print("x outside function:", x)

# 출력 결과:
# x inside function: 15
# x outside function: 15

위 예시에서 x는 함수 외부에서 선언된 전역 변수입니다. 함수 내부에서 x5를 더하고 출력하면 15라는 값이 출력됩니다. 또한 같은 x를 함수 외부에서 출력하면 역시 15라는 값이 출력됩니다.

이때 주의해야 할 점은 함수 내부에서 전역 변수를 수정할 경우 global 키워드를 사용해야 한다는 것입니다. 그렇지 않으면 함수 내부에서 생성된 지역 변수가 되어 전역 변수는 변경되지 않습니다.

함수 내부에서 전역 변수를 수정하는 대신, 함수의 반환값을 활용하여 전역 변수를 변경하거나 함수 내부에 필요한 값을 인자로 전달하는 것이 좋은 방법입니다.

결론

파이썬에서 함수의 지역 변수와 전역 변수는 서로 다른 범위(scope)를 가지고 동작합니다. 지역 변수는 해당 함수 내에서만 접근 가능하고, 함수 외부에서는 접근할 수 없습니다. 전역 변수는 프로그램 전체에서 접근 가능하며, 함수 내부에서도 접근할 수 있습니다. 전역 변수를 함수 내부에서 수정할 때는 global 키워드를 사용해야 합니다. 이를 활용하여 코드를 작성하면 변수의 범위를 명확히 하고, 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.