현재 점수는 reward_penalty() 함수에 영향을 받지 않는 점수이므로 함수 외부에 current_point라는 이름으로 변수를 정의했습니다. reward_penalty() 함수는 상점인지 벌점인지(kind)와 그에 따른 점수(points)를 받아서 실행합니다. 따라서 매개변수가 2개 필요합니다. 만약 kind 변수의 값이 ‘상점’이라면 현재 점수(current_point)에 추가 점수(points)를 더하고, kind 변수의 값이 ‘벌점’이라면 현재 점수에서 추가 점수만큼 뺍니다. 프로그램을 실행해 보면 오류가 발생합니다. 왜 오류가 발생할까요?
실행결과
9 current_point = 5
---> 10 reward_penalty('상점', 5)
1 def reward_penalty(kind, points):
----> 2 print('현재 점수 :', current_point)
UnboundLocalError: local variable 'current_point' referenced before assignment
current_point는 함수 외부에 정의됐기 때문에 전역변수입니다. 그런데 함수 내부에서 값을 변경하려고 해서 UnboundLocalError가 발생합니다.