이 문제의 해결책은 global이라는 키워드입니다. global을 변수 앞에 붙이면 전역변수를 함수 안에서 사용하겠다는 의미입니다. 그래서 함수 안에 global glasses라고 작성하면 전역 공간에 정의한 변수를 함수 안에서 그대로 사용할 수 있고 값도 변경할 수 있습니다.
glasses = 10
def rent(people):
global glasses # 전역 공간에 있는 glasses 변수를 함수 안에서 사용하겠다는 표시
glasses = glasses - people
print("[함수 내부] 남은 3D 안경 개수: {0}".format(glasses))
print("전체 3D 안경 개수: {0}".format(glasses))
rent(2)
print("남은 3D 안경 개수: {0}".format(glasses))
실행결과 |
전체 3D 안경 개수: 10 [함수 내부] 남은 3D 안경 개수: 8 남은 3D 안경 개수: 8 |
드디어 보관함에 남은 안경 개수를 제대로 출력합니다. 그런데 함수 안에 전역변수를 자주 사용하면 코드 관리가 복잡해집니다. 꼭 필요한 경우가 아니라면 되도록 사용하지 않기를 권합니다.