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

208  PART 2? 파이썬으로 익히는 STEAM 코딩

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

      실행결과

     2
     2
     3

     특히 다음 프로그램의 경우처럼 전역변수와 지역변수가 같은 이름으로 함수 내부에서 존
     재할 때 func1() 함수 내의 변수 gv는 지역변수이며, 변수 gv에 값을 대입하기 이전에 변
     수 gv의 값을 사용하였으므로 “UnboundLocalError: local variable ‘gv’ referenced before
     assignment” 오류가 발생한다. 위의 첫 번째 프로그램에서 func1() 함수 내에서 변수 gv에
     값이 대입되는 문장이 없으므로 변수 gv가 전역변수로 참조되었음에 주의하자. 그리고 다
     음 프로그램에서는 func1() 함수 내의 변수 gv에 값이 대입되는 문장이 1v1 = 1v1 + gv 문
     장에서 변수의 값이 먼저 사용되었음에 주의하자.

     gv = 3           	 # 전역변수 gv 선언

     def func1():

     lv1 = 1          	 # 지역변수 lv1 선언

     lv1 = lv1 + gv 	 # 지역변수 lv1의 값, 지역변수 gv의 값

                      	 # => gv에서 오류 발생

     gv = 1           	 # 지역변수 gv의 값을 1로 변경

     print(lv1)

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

     func1()          	 # 전역변수 gv의 값
     func2(2)
     print(gv)
   32   33   34   35   36   37   38   39   40   41   42