Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python의 전역 변수와 지역 변수, 정확히 이해하기

Python에서 변수가 선언되는 위치에 따라 그 변수의 유효 범위(scope)가 결정됩니다. 함수 본문 내부에서 정의된 변수는 지역 범위(local scope)를 가지며, 함수 외부에서 정의된 변수는 전역 범위(global scope)를 가집니다.

즉, 지역 변수는 해당 변수가 선언된 함수 내부에서만 접근할 수 있지만, 전역 변수는 프로그램 전체 어디에서든 모든 함수가 접근할 수 있습니다. 함수를 호출하면 그 함수 내부에서 선언된 변수들이 유효 범위에 포함됩니다.

예제 코드

#!/usr/bin/python

total = 0  # 전역 변수

# 함수 정의
def sum(arg1, arg2):
    # 두 매개변수를 더한 후 반환합니다.
    total = arg1 + arg2  # 여기서 total은 지역 변수입니다.
    print("함수 내부의 지역 total : ", total)
    return total

# sum 함수 호출
sum(10, 20)
print("함수 외부의 전역 total : ", total)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

함수 내부의 지역 total : 30
함수 외부의 전역 total : 0

결과 분석

출력 결과가 흥미로운 이유는 함수 안에서 total에 30이라는 값이 할당되었음에도 불구하고, 함수 밖에서 출력한 total 값은 여전히 0이기 때문입니다.

그 이유는 함수 내부에서 total = arg1 + arg2처럼 변수에 값을 할당하는 순간, Python은 같은 이름의 새로운 지역 변수를 생성하기 때문입니다. 따라서 함수 내부의 total과 외부의 전역 total은 이름만 같을 뿐 서로 완전히 다른 변수입니다.

global 키워드로 전역 변수 수정하기

만약 함수 내부에서 전역 변수 자체를 변경하고 싶다면 global 키워드를 사용해야 합니다.

total = 0

def sum(arg1, arg2):
    global total  # 전역 변수임을 명시
    total = arg1 + arg2
    return total

sum(10, 20)
print(total)  # 출력: 30

이처럼 유효 범위의 개념을 정확히 이해하면, 변수 충돌이나 의도하지 않은 값 손실 같은 버그를 예방할 수 있습니다.