파이썬에서 변수의 범위(scope) : 해당 변수가 프로그램 내에서 참조되고 변경될 수 있는 영역.
파이썬의 변수 범위는 크게 네 가지로 분류된다.
Local scope : 변수가 함수 내에서 정의될 때 해당 함수 내부를 의미
def local_func():
local_var = '로컬 변수'
print(local_var) # 함수 밖에서 사용할 수 없다.
local_func()
로컬 변수
Enclosing scope : 내부 함수에서 외부 함수의 변수를 참조할 때 해당 외부 함수 범위를 의미.
def outer_function():
enclosing_var = "둘러싼 범위 변수"
def inner_function():
print(enclosing_var)
inner_function()
outer_function()
둘러싼 범위 변수
Global scope : 변수가 스크립트의 최상위 수준에서 정의될 때 전체 스크립트 파일 내에서 해당 변수를 의미.
global_var = "I'm a global variable"
def test_global_scope():
print(global_var)
test_global_scope()
I'm a global variable
global_var = 10 # 전역 변수
def global_func():
global_var = 20 # 지역 변수
print(global_var) # 출력: 20
global_func()
print(global_var)
20
10
global_var = 10 # 전역 변수
def global_func():
global global_var
global_var = 20 # 전역 변수의 값을 덮는 것
print(global_var) # 출력: 20
global_func()
print(global_var)
20
20
Built-in scope : 파이썬의 내장 함수와 모듈들이 속하는 범위. ex) print(), len() 같은 함수들
len = 5
print(len([1, 2, 3]))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/tmp/ipython-input-6-696259772.py in <cell line: 0>()
1 len = 5
----> 2 print(len([1, 2, 3]))
TypeError: 'int' object is not callable
len()은 파이썬의 내장 함수인데, 변수명으로 선언해버리면 함수로 사용할 수 없게 된다.
1. Local scope
2. Enclosing scope
3. Global scope
4. Built-in scope
지역 범위에 동일한 이름의 변수가 없으면
파이썬은 둘러싼 범위를 확인하고,
그 다음으로 전역 범위,
마지막으로 내장 범위를 확인한다.
변수의 범위를 이해하고 관리하는 것은 코드의 가독성과 유지 보수성을 높이고, 예기치 않은 오류를 방지하는 데 중요하다.