1. 변수의 범위 : 스코프(scope)
파이썬에서 함수, if문, for문 안에서 만들어진 변수는 밖에서 사용되지 않습니다. 그래서 변수의 범위(scope)가 중요합니다.
변수의 범위(scope)는 해당 변수가 프로그램 내에서 참조되고 변경될 수 있는 영역을 의미합니다.
파이썬의 변수 범위는 크게 네 가지로 분류됩니다.
1. 지역(Local) 변수
Local scope는 변수가 함수 내에서 정의될 때 해당 함수 내부를 의미합니다.
로컬 변수 |
print(local_var)
오류 |
ㄴ 블록이 끝나면 변수가 사라집니다.
2. 둘러싼 (Enclosing) 변수
Enclosing scope는 내부 함수에서 외부 함수의 변수를 참조할 때 해당 외부 함수 범위를 의미합니다.
둘러싼 범위 변수 |
ㄴ작동순서 1) 상위 변수가 메모리에 올라감 2) 하위함수가 실행 3) 상위함수가 실행
ㄴ부모함수에 있던 변수는 자식함수에서 변수를 가져다 쓸 수 있습니다.
ㄴ상위 함수가 실행된다고 하위가 자동으로 실행되지 않습니다.
ㄴ( 에러가 나지 않았지만 실행해보아야 잘 작동되는지 알 수 있습니다. )
3. 전역 (Global) 변수
Global scope는 변수가 스크립트의 최상위 수준에서 정의될 때 전체 스크립트 파일 내에서 해당 변수로 사용됨을 의미합니다.
글로벌 변수 |
ㄴ 함수 밖에서 선언된 것은 함수 안으로 바로 사용할 수 있습니다.
10 20 |
20 20 |
4. 내장 범위 (Built-in)
Built-in scope는 파이썬의 내장 함수와 모듈들이 속하는 범위입니다.
예를 들어, print(), len() 같은 함수들이 여기에 해당됩니다.
<built-in function print> <built-in function len> <built-in function sum> |
ㄴ기본적으로 사용하는 함수입니다.
2. 변수의 범위 탐색 순서
변수 이름이 겹칠 경우 무엇을 우선순위로 호출할까요? 순서는 다음과 같습니다.
1. Local scope
최우선이 지역변수입니다.
이름이 겹쳤을 때 지역변수 먼저 탐색합니다.
2. Enclosing scope
그 다음에는 밖을 감싸고 있는 함수에 변수가 우선시 됩니다.
3. Global scope
그 다음에 글로벌 변수를 탐색합니다.
4. Built-in scope
마지막으로 내장함수의 변수를 탐색합니다.
따라서 지역 범위에 동일한 이름의 변수가 없으면 파이썬은 둘러싼 범위를 확인하고, 그 다음으로 전역 범위, 마지막으로 내장 범위를 확인합니다. 이렇게 변수의 범위를 이해하고 관리하는 것은 코드의 가독성과 유지 보수성을 높이고, 예기치 않은 오류를 방지하는 데 중요합니다.
'Python > 개념' 카테고리의 다른 글
Day 6-3. 객체지향과 클래스 (0) | 2024.03.18 |
---|---|
Day 6-2. 콜백함수와 람다함수 (0) | 2024.03.15 |
Day 5-2. 사용자 정의 함수 (0) | 2024.03.15 |
Day 5-1. 컬렉션과 반복문 (0) | 2024.03.15 |
Day 4-5. 제어문 - 반복문 (0) | 2024.03.14 |