안녕하세요~
오늘은 변수의 범위에 대해서 알아보려고 합니다!
변수에는 접근 가능한 영역이 존재하는데 이를 스코프라고 하고 있습니다.
스코프 별로 변수 네 가지로 분류하고 있습니다. local, enclosing ,global, built-in 이렇게 네 가지입니다.
차례로 익혀보도록 하겠습니다.
파이썬에서 변수의 범위(scope)는 해당 변수가 프로그램 내에서 참조되고 변경될 수 있는 영역을 의미합니다. 파이썬의 변수 범위는 크게 네 가지로 분류됩니다
Local scope는 변수가 함수 내에서 정의될 때 해당 함수 내부를 의미합니다.
쉽게 말해 변수는 선언된 함수 내부만 접근 가능합니다.
Enclosing scope는 내부 함수에서 외부 함수의 변수를 참조할 때 해당 외부 함수 범위를 의미합니다.
enclosing_var를 주의해서 살펴보면 외부에서 정의된 함수이지만 내부 함수에서 외부 함수의 변수를 참조할 때 사용되었습니다. Enclosing scope는 주로 중첩 함수가 정의되었을 때 이용됩니다.
Global scope는 변수가 스크립트의 최상위 수준에서 정의될 때 전체 스크립트 파일 내에서의 해당 변수를 의미합니다.
전역 변수는 함수에 관계없이 접근 가능합니다. 전역 변수의 스코프는 함수 내ㆍ외부입니다.
아래 두 코드에서 위와 아래로 구분지어 이야기 하겠습니다.
위의 코드인 경우 modify_global함수에서 전역 변수로 설정했기 때문에 함수 내부에서 값이 수정된 값이 함수 외부의 변수 값도 수정되어 저장됨을 확인할 수 있습니다.
반면 아래 코드의 경우 전역 변수로 설정하지 않았기 때문에 지역 변수입니다. 지역 변수는 스코프가 함수 내부이므로 함수 내부에서는 값이 20으로 저장되어있지만 함수 외부에서는 여전히 값이 10임을 알 수 있습니다.
Built-in scope는 파이썬의 내장 함수와 모듈들이 속하는 범위입니다. 예를 들어, print(), len() 같은 함수들이 여기에 해당됩니다.
따라서 지역 범위에 동일한 이름의 변수가 없으면 파이썬은 둘러싼 범위를 확인하고, 그 다음으로 전역 범위, 마지막으로 내장 범위를 확인합니다.
이렇게 변수의 범위를 이해하고 관리하는 것은 코드의 가독성과 유지 보수성을 높이고, 예기치 않은 오류를 방지하는 데 중요합니다.
Python 15. 객체 지향과 클래스 (0) | 2024.03.20 |
---|---|
Python 14. 콜백함수와 람다함수 (0) | 2024.03.19 |
Python 12. 사용자 정의 함수 (0) | 2024.03.15 |
Python 11. 컬렉션과 반복문 (0) | 2024.03.15 |
Python 10. 제어문 - 반복문(while문, for문) (0) | 2024.03.14 |