본문 바로가기

Python 기초

파이썬 기초(12)-변수의 범위

*이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*

1. Scope(범위)

파이썬에서 변수의 범위(scope)는 해당 변수가 프로그램 내에서 참조되고 변경될 수 있는 영역을 의미합니다. 파이썬의 변수 범위는 크게 네 가지로 분류됩니다. 변수의 범위는 크게 4가지로 local, enclosing, global, built-in으로 나뉩니다. 변수이름이 겹치는 경우, local->enclosing->global->built-in 순서로 변수범위 적용, 나중에 코드작성할때 결과값이 다르게 나올 경우, 위 순서로 범위를 넓혀가며 생각하는 편이 좋습니다.

  • Local(지역변수)
  • Enclosing(둘러싼 범위)
  • Global(전역변수)
  • Built-in(내장 범위

1-1. Local

지역변수라고 하며, 변수가 함수 내에서 정의될 때 해당 함수 내부를 의미합니다.

#Local
def a():
    local_var='Local변수'
    print(local_var)
a()

1-2. Enclosing

내부 함수에서 외부 함수의 변수를 참조할 때 해당 외부 함수 범위를 의미합니다. 함수안에 함수를 생성하는데, 부모함수안에 있는 변수는 내부함수 안에서 사용가능합니다.

#Enclosing: 
def a():
    enclosing_var='enclosing변수'
    def b():
        print(enclosing_var)
    b()
a()

1-3. Global

전역변수라고 하며, 변수가 스크립트의 최상위 수준에서 정의될 때 전체 스크립트 파일 내에서의 해당 변수로 사용됨을 의미합니다.

#global
global_var='global변수'
def a():
    print(global_var)
a()

#Local변수와 Global변수의 차이점
var=1001        #global변수 선언

def a():
    var=10      #lcoal변수 선언
    print(var)  #local변수 출력

a()
print(var)

함수로 선언된 변수는 local변수가 나오지만, 그냥 출력한 변수는 global변수가 나온다.

외부 global변수를 local변수로 사용할 땐, global문을 사용한다.

#global변수를 local변수로 동일화시키기
var=1001        #global변수 선언

def a():
    global var  #전역변수->지역변수로 수정
    var=10      
    print(var) 

a()
print(var)

1-4. Built-in

파이썬의 내장 함수와 모듈들이 속하는 범위입니다. 예를 들어, print(), len() 같은 함수들이 여기에 해당됩니다.

#Built-in
print(print)
print(len)
print(sum)