1. 스코프(scope)
파이썬에서 변수의 범위(scope)는 해당 변수가 프로그램 내에서 참조되고 변경될 수 있는 영역을 의미합니다. 파이썬의 변수 범위는 크게 네 가지로 분류됩니다
1-1. Local(지역)
Local scope는 변수가 함수 내에서 정의될 때 해당 함수 내부를 의미합니다.
def local_example():
local_var = '로컬 변수'
print(local_var)
local_example()
# print(local_var) NameError: name 'local_var' is not defined
결과:
로컬 변수
local변수는 함수를 실행할때만 생성이되고 해당 블록이 끝나는순간 변수는 사라지게 된다.
1-2. Enclosing(둘러싼 범위)
Enclosing scope는 내부 함수에서 외부 함수의 변수를 참조할 때 해당 외부 함수 범위를 의미합니다.
def outer_function():
enclosing_var = '둘러싼 범위 변수'
def inner_function():
print(enclosing_var)
inner_function()
outer_function()
결과:
둘러싼 범위 변수
외부 함수는 내부 함수를 호출해서서 사용할 수 있다.
1-3. Global(전역범위)
Global scope는 변수가 스크립트의 최상위 수준에서 정의될 때 전체 스크립트 파일 내에서의 해당 변수로 사용됨을 의미한다.
global_var = '글로벌 변수' # 어디에도 속해있지 않은 변수
def test_global_space():
print(global_var)
test_global_space()
결과:
글로벌 변수
# 전역변수와 지역변수의 차이
global_var = 10 # 전역변수 선언
def modify_global():
global_var = 20 # 이름은 같지만 함수 안에서 지역변수로 새로 선언이 되었다.
print(global_var)
modify_global()
print(global_var)
global_var = 10
def modify_global():
global global_var # 함수내에 전역변수 사용을 선언
global_var = 20 # 전역변수 수정
print(global_var)
modify_global()
print(global_var)
- 전역변수를 함수안에서 다시 선언을하면 해당함수의 지역변수로 새롭게 생성이된다.
- 전역변수를 함수안에서 사용하거나 수정을 하려면 global 을 선언 해주어야 한다.
1-4. Built_in(내장 범위)
Built-in scope는 파이썬의 내장 함수와 모듈들이 속하는 범위입니다. 예를 들어, print(), len() 같은 함수들이 여기에 해당됩니다.
print(print)
print(len)
print(sum)
결과:
<built-in function print>
<built-in function len>
<built-in function sum>
Built_in함수는 기본으로 내장되어있어 따로 선언을 안해도 사용할수 있는 함수이다.
2. 변수의 범위 탐색 순서
1. Local scope(지역변수)
2. Enclosing scope(둘러싼 범위)
3. Global scope(전역변수)
4. Built-in scope(내장범위)
이름이 겹치게 되면 위의 순서로 사용이된다.
'코딩 > 파이썬' 카테고리의 다른 글
파이썬 - 객체지향과 클래스 (3) | 2024.03.18 |
---|---|
파이썬 - 콜백함수와 람다함수 (1) | 2024.03.18 |
파이썬 - 사용자 정의 함수 (0) | 2024.03.15 |
컬렉션과 반복문 (2) | 2024.03.15 |
파이썬 제어문 - 반복문 (2) | 2024.03.15 |