Python/파이썬 기초 강의(2024)★

파이썬, 지역변수 전역변수 Local & Global Variable, global

코딩ABC 2024. 11. 22. 12:32
반응형

Python에서 지역 변수와 전역 변수는 **변수의 범위(Scope)**와 관련이 있습니다. 어떤 변수가 어디서 접근 가능한지 이해하려면 이 둘의 차이를 잘 알아야 합니다.

 

1. 지역 변수 (Local Variable)

  • 정의: 함수 내부에서 선언된 변수입니다.
  • 범위: 선언된 함수 내부에서만 유효하며, 함수가 끝나면 제거됩니다.
  • 특징: 함수 외부에서는 접근할 수 없습니다.
def my_function():
    x = 10  # 지역 변수
    print(f"지역 변수 x: {x}")

my_function()
# print(x)  # 에러 발생: x는 함수 외부에서 접근 불가

 

2. 전역 변수 (Global Variable)

  • 정의: 함수 외부에서 선언된 변수입니다.
  • 범위: 프로그램 전체에서 접근 가능하며, 모든 함수에서 사용할 수 있습니다.
  • 특징: 함수 내부에서도 접근 가능하지만, 함수 내부에서 수정하려면 global 키워드를 사용해야 합니다.
x = 20  # 전역 변수

def my_function():
    print(f"전역 변수 x: {x}")

my_function()
print(f"전역 변수 x: {x}")  # 여전히 접근 가능

 

3. 전역 변수 수정

함수 내부에서 전역 변수를 수정하려면 global 키워드를 사용해야 합니다. 그렇지 않으면 Python은 내부에서 새 지역 변수를 생성한다고 간주합니다.

 

잘못된 예: 전역 변수 수정 시 오류

x = 20

def my_function():
    x = x + 10  # UnboundLocalError 발생: 함수 내부에서는 지역 변수로 간주됨
    print(x)

my_function()

 

올바른 예: global 키워드 사용

x = 20

def my_function():
    global x  # 전역 변수 사용 선언
    x = x + 10
    print(f"수정된 전역 변수 x: {x}")

my_function()
print(f"최종 전역 변수 x: {x}")

 

4. nonlocal 키워드

  • 함수 내부의 **중첩 함수(nested function)**에서 사용됩니다.
  • 중첩 함수에서 바로 바깥쪽 함수의 변수(로컬 범위)를 수정할 때 사용합니다.
def outer_function():
    x = 10  # 바깥 함수의 지역 변수

    def inner_function():
        nonlocal x  # 바깥 함수의 변수 x를 사용
        x += 5
        print(f"내부에서 수정된 x: {x}")

    inner_function()
    print(f"바깥 함수에서의 x: {x}")

outer_function()

 

요약

  • 지역 변수: 함수 내부에서 선언, 함수 내부에서만 사용 가능.
  • 전역 변수: 함수 외부에서 선언, 전체에서 사용 가능. 함수 내부에서 수정 시 global 필요.
  • nonlocal: 중첩 함수에서 상위 함수의 지역 변수를 수정할 때 사용.
반응형