Python/basic

python, 네임스페이스, 스코프, 지역 함수

still..epochs 2022. 12. 21. 21:58

* 본 포스팅은 '파이썬 라이브러리를 활용한 데이터 분석' 을 참조하여 작성되었습니다.

 

 

함수는 전역과 지역, 두 가지 스코프(영역)에서 변수를 참조한다. 변수의 스코프를 설명하는 다른 용어로 네임스페이스가 있다. 

 

함수 내에서 선언된 변수는 기본적으로 모두 지역 네임스페이스에 속한다. 지역 네임스페이스는 함수가 호출될 때 생성되며 함수의 인자를 통해 즉시 생성된다. 함수의 실행이 끝나면 지역 네임스페이스는 사라진다.

 

다음 함수를 살펴보자.

def func():
	a = []
    for i in range(5):
    	a.append(i)

func() 함수를 호출하면 비어 있는 리스트 a가 생성되고 다섯 개의 원소가 리스트에 추가된다. 그리고 함수가 끝나면 이 리스트 a는 사라진다. 하지만 리스트 a를 다음과 같이 선언했다고 하자.

 

a = []

def func():
    for i in range(5):
        a.append(i)

 

함수의 스코프 밖에서 변수에 값을 대입하려면 그 변수를 global 예약어를 이용해서 전역 변수로 선언해야 한다.

a = None

def bind_a_variable():
    global a
    a = []

bind_a_variable()

a

 

 

* global 예약어는 자주 사용하지 않도록 한다. 일반적으로 전역 변수는 시스템 전체의 상태를 저장하기 위한 용도로 사용한다. 만약 전역 변수를 많이 사용하면 클래스를 사용한 객체지향 프로그래밍이 적절한 상황이라는 반증이다.

'Python > basic' 카테고리의 다른 글

익명 함수, 람다 함수, python  (1) 2022.12.21