파이썬
변수의 범위
96__혀누
2024. 3. 18. 16:50
스코프 ( scope )
파이썬에서 변수의 범위(scope)는 해당 변수가 프로그램 내에서 참조되고 변경될 수 있는 영역을 의미합니다. 파이썬의 변수 범위는 크게 네 가지로 분류됩니다
1. Local ( 지역변수 )
Local scope는 변수가 함수 내에서 정의될 때 해당 함수 내부를 의미합니다.
def local_example():
local_var = '로컬 변수'
print(local_var)
local_example()
# 함수 내에서 만들어진 변수이기 때문에, 외부에서 불러올 수 없다.
# 함수 내에 있는 변수를 외부에서 불러오려 할 시, 아래 오류가 발생한다.
# print(local_var) # NameError: name 'local_var' is not defined
>> 로컬 변수
2. Enclosing ( 둘러싼 범위 )
내부 함수에서 외부 함수의 변수를 참조할 때 해당 외부 함수 범위를 의미
def outer_function():
enclosing_var = '둘러싼 범위 변수'
# outer_function() 함수 내의 함수
# 함수가 달라도, 해당 함수 내에 다른 함수의 변수는 호출할 수 있다.
def inner_function():
print(enclosing_var)
inner_function()
outer_function()
>> 둘러싼 범위 변수
3. Global ( 전역변수 )
해당 변수가 스크립트의 최상위에 있을 때, 전체 스크립트에서 해당 변수로 사용할 수 있음을 의미
global_var = '글로벌 변수'
def test_global_scope():
print(global_var) # 해당 변수가 최상위에 있을 시, 함수 내에서 사용 가능
test_global_scope()
>> 글로벌 변수
# 전역변수와 지역변수
global_var = 10 # 전역변수
def modify_global():
global_var = 20 # 전역변수를 함수내로 불러와도 지역변수로 선언
print(global_var)
modify_global()
print(global_var)
>>
20
10 # 함수내에서 수정 하였더라도, 함수 내부에서 사용하는 변수는 이름이 같아도, 지역변수이기 때문에 기존 전역변수의 값이 변경되지 않는다.
# 함수내에서 전역변수를 수정하는 법
global_var = 10
def modify_global():
global global_var # global 변수명 을 기입할 시, 함수내에서 전역함수를 사용 및 수정할 수 있다.
global_var = 20 # 전역변수 수정
print(global_var)
modify_global()
print(global_var)
>>
20
20
4. Built-in ( 내장 범위 )
파이썬에서 기본적으로 제공하는 내장 함수와 모듈들이 속하는 범위입니다. 예 ) print(), len() 등
print(print)
print(len)
print(sum)
>>
# 해당 함수의 범위를 확인할 수 있다.
<built-in function print>
<built-in function len>
<built-in function sum>
※ 변수의 범위 탐색 순서
1. 지역변수 ( Local scope )
2. 둘러싼 범위 내 ( Encording scope )
3. 전역변수 ( Global scope )
4. 내장 범위 = 내장 함수 및 모듈 ( Built-in scope )
예를 들어, 지역 범위에 동일한 이름의 변수가 없으면 파이썬은 둘러싼 범위를 확인하고, 그 다음으로 전역 범위, 마지막으로 내장 범위를 확인합니다.
이렇게 변수의 범위를 이해하고 관리하는 것은 코드의 가독성과 유지 보수성을 높이고, 예기치 않은 오류를 방지하는 데 중요합니다.