Page 38 - 파이썬으로 배우는 컴퓨팅사고 도서 미리보기
P. 38

CHAPTER 9? 기술(Technology)          209

 실행결과
UnboundLocalError: local variable ‘gv’ referenced before assignment 오류

위의 프로그램들에서 알 수 있듯이 전역변수는 함수 내에서 사용할 때 주의를 해야 한다.
이러한 혼란이나 오류 발생의 가능성을 줄이기 위하여, 그리고 전역변수의 값을 변경하는
경우에는 함수 내부에서 해당 전역변수를 global 예약어로 먼저 선언해야 한다.

gv = 3               	 # 전역변수 gv 선언

def func1():          	   # 전역변수 gv 선언
     global gv         	  # 지역변수 lv1 선언
     lv1 = 1          	   # 지역변수 lv1의 값, 전역변수 gv의 값
     lv1 = lv1 + gv    	  # 전역변수 gv의 값을 1로 변경
     gv = 1          	    # 지역변수 lv1의 값, 전역변수 gv의 값
     print(lv1, gv)

def func2(pv):       	 # 매개변수 pv 선언
     lv2 = pv         	 # 지역변수 lv2 선언, 매개변수 pv의 값
     print(lv2)      	 # 지역변수 lv2의 값

func1()              	 # 전역변수 gv의 값
func2(2)
print(gv)

 실행결과

41
2
1
   33   34   35   36   37   38   39   40   41   42   43