변수의 범위

현서·2025년 1월 2일

파이썬

목록 보기
16/27
post-thumbnail

1. 범위(scope)

파이썬에서 변수의 범위(scope) : 해당 변수가 프로그램 내에서 참조되고 변경될 수 있는 영역.

파이썬의 변수 범위는 크게 네 가지로 분류된다.

1-1 지역(Local) 범위

Local scope : 변수가 함수 내에서 정의될 때 해당 함수 내부를 의미

def local_func():
  local_var = '로컬 변수'
  print(local_var) # 함수 밖에서 사용할 수 없다.
local_func()
로컬 변수

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 = "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

1-4 내장 범위(Built-in)

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()은 파이썬의 내장 함수인데, 변수명으로 선언해버리면 함수로 사용할 수 없게 된다.

2. 변수의 범위 탐색 순서

1. Local scope

2. Enclosing scope

3. Global scope

4. Built-in scope

지역 범위에 동일한 이름의 변수가 없으면
파이썬은 둘러싼 범위를 확인하고,
그 다음으로 전역 범위,
마지막으로 내장 범위를 확인한다.

변수의 범위를 이해하고 관리하는 것은 코드의 가독성과 유지 보수성을 높이고, 예기치 않은 오류를 방지하는 데 중요하다.

profile
The light shines in the darkness.

0개의 댓글