변수의 범위 (Scope)

Tip학습 목표
  • 매개변수(parameters)가 지역 변수(local variables)의 일종임을 이해합니다.
  • 오류 메시지(traceback)를 읽고 오류가 발생한 위치, 종류 및 내용을 파악합니다.
Note질문
  • 함수 내부에서 정의된 변수를 함수 외부에서도 사용할 수 있나요?
  • 오류 메시지에서 유용한 정보를 어떻게 찾아내나요?

변수의 범위 (Variable Scope)

  • 함수 내부에서 정의된 매개변수나 변수는 함수 외부에서는 보이지 않습니다. 이를 변수의 범위(scope)라고 합니다.
  • 함수 내부에서만 유효한 변수를 지역 변수(local variables)라고 부릅니다.
pressure = 103.9

def adjust(t):
    temperature = t * 1.43 / pressure
    return temperature
  • 위 코드에서 pressure는 함수 외부에서 정의된 전역 변수(global variable)입니다. 함수 내부에서도 이 값을 읽을 수 있습니다.
  • 반면 adjust 함수 내부의 ttemperature는 지역 변수입니다. 함수 실행이 끝나면 이 변수들은 더 이상 존재하지 않습니다.
# print(temperature)  # NameError 발생: temperature는 정의되지 않음

오류 메시지(Traceback) 읽기

오류가 발생하면 파이썬은 트레이스백(traceback)이라는 메시지를 출력합니다. 이 메시지에는 오류를 해결하는 데 필요한 핵심 정보가 담겨 있습니다.

  1. 에러의 종류: 마지막 줄의 첫 단어 (예: NameError, IndexError, KeyError 등).
  2. 에러 내용: 종류 뒤에 이어지는 구체적인 설명.
  3. 발생 위치: 오류가 발생한 파일 이름과 줄 번호.
  4. 호출 경로: 함수가 중첩되어 호출된 경우, 어떤 경로를 거쳐 오류 지점에 도달했는지 보여줍니다.
Important연습 문제

지역 변수 확인하기

다음 코드의 실행 결과를 예측해 보세요.

limit = 100

def clip(value):
    return min(max(0, value), limit)

print(clip(120))
# print(value)

clip(120)100을 반환합니다. 하지만 print(value)를 실행하면 NameError가 발생합니다. valueclip 함수 내부에서만 사용되는 지역 변수이기 때문입니다.

Note핵심 요약
  • 함수 내부의 변수는 외부에서 접근할 수 없는 지역 범위를 가집니다.
  • 오류 메시지를 통해 발생 위치와 원인을 파악하는 습관을 기르세요.