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)