파이썬

변수의 범위

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 )

 

예를 들어, 지역 범위에 동일한 이름의 변수가 없으면 파이썬은 둘러싼 범위를 확인하고, 그 다음으로 전역 범위, 마지막으로 내장 범위를 확인합니다.
이렇게 변수의 범위를 이해하고 관리하는 것은 코드의 가독성과 유지 보수성을 높이고, 예기치 않은 오류를 방지하는 데 중요합니다.