상세 컨텐츠

본문 제목

Python 13. 변수의 범위!

파이썬

by 아리벱 2024. 3. 19. 09:04

본문

안녕하세요~

오늘은 변수의 범위에 대해서 알아보려고 합니다!

변수에는 접근 가능한 영역이 존재하는데 이를 스코프라고 하고 있습니다.

스코프 별로 변수 네 가지로 분류하고 있습니다. local, enclosing ,global, built-in 이렇게 네 가지입니다.

차례로 익혀보도록 하겠습니다.

 

1. 스코프(Scope)

파이썬에서 변수의 범위(scope)는 해당 변수가 프로그램 내에서 참조되고 변경될 수 있는 영역을 의미합니다. 파이썬의 변수 범위는 크게 네 가지로 분류됩니다

1-1. Local(지역)

Local scope는 변수가 함수 내에서 정의될 때 해당 함수 내부를 의미합니다.

 

쉽게 말해 변수는 선언된 함수 내부만 접근 가능합니다.

local_var는 함수 내에서 정의되었기 때문에 함수 내부 이외에서는 에러가 발생합니다.

 

1-2. Enclosing(둘러싼 범위)

Enclosing scope는 내부 함수에서 외부 함수의 변수를 참조할 때 해당 외부 함수 범위를 의미합니다.

 

enclosing_var를 주의해서 살펴보면 외부에서 정의된 함수이지만 내부 함수에서 외부 함수의 변수를 참조할 때 사용되었습니다. Enclosing scope는 주로 중첩 함수가 정의되었을 때 이용됩니다.

 

1-3. Global(전역 범위)

Global scope는 변수가 스크립트의 최상위 수준에서 정의될 때 전체 스크립트 파일 내에서의 해당 변수를 의미합니다.

 

전역 변수는 함수에 관계없이 접근 가능합니다. 전역 변수의 스코프는 함수 내ㆍ외부입니다.

아래 두 코드에서 위와 아래로 구분지어 이야기 하겠습니다.

위의 코드인 경우 modify_global함수에서 전역 변수로 설정했기 때문에 함수 내부에서 값이 수정된 값이 함수 외부의 변수 값도 수정되어 저장됨을 확인할 수 있습니다.

반면 아래 코드의 경우 전역 변수로 설정하지 않았기 때문에 지역 변수입니다. 지역 변수는 스코프가 함수 내부이므로 함수 내부에서는 값이 20으로 저장되어있지만 함수 외부에서는 여전히 값이 10임을 알 수 있습니다.

 

1-4. Built-in(내장 범위)

Built-in scope는 파이썬의 내장 함수와 모듈들이 속하는 범위입니다. 예를 들어, print(), len() 같은 함수들이 여기에 해당됩니다.

2. 변수의 범위 탐색 순서

따라서 지역 범위에 동일한 이름의 변수가 없으면 파이썬은 둘러싼 범위를 확인하고, 그 다음으로 전역 범위, 마지막으로 내장 범위를 확인합니다.

이렇게 변수의 범위를 이해하고 관리하는 것은 코드의 가독성과 유지 보수성을 높이고, 예기치 않은 오류를 방지하는  중요합니다.

관련글 더보기