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)를 실행하니 에러가 발생할 수밖에 없는 것이지요.