더북(TheBook)

2global 변수

 

어떤 함수 안에서 변수를 지정해서 사용하면 그 변수는 그 함수 안에서만 사용할 수 있습니다. 이해를 돕기 위해 다음 코드를 살펴보겠습니다.

 

def f():

a = 5

 

f()

print(a)

 

f 함수는 변수 a에 값 5를 저장하는 함수입니다. 프로그램에서 함수 f를 호출했으므로 a라는 변수가 생겨서 값 5가 저장되어 있을 것 같죠? 하지만 실행하면 print(a)에서 에러가 발생합니다.

 

Traceback (most recent call last):

File "", line 5, in <module>

print(a)

NameError: name 'a' is not defined

>>>

 

이 에러는 ‘변수 a가 정의되지 않았다’는 말로 ‘a가 없다’는 뜻입니다. 왜 그럴까요?

바로 5라는 값을 저장한 a 변수가 f 함수 ‘안에’ 정의되었기 때문입니다. 함수 안에서 정의한 변수는 ‘그 함수 안에서만’ 살아 있는 변수가 됩니다. 따라서 함수 블록을 빠져나오면 더 이상 변수 a를 사용할 수 없습니다. 이미 사용할 수 없게 된 변수 a를 출력하려고 print(a)를 실행하니 에러가 발생할 수밖에 없는 것이지요.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.