본문 바로가기
코딩/파이썬

파이썬 - 변수의 범위

by Song1234 2024. 3. 18.

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