더북(TheBook)

이 문제의 해결책은 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))

실행결과 icon_con

전체 3D 안경 개수: 10
[함수 내부] 남은 3D 안경 개수: 8
남은 3D 안경 개수: 8

드디어 보관함에 남은 안경 개수를 제대로 출력합니다. 그런데 함수 안에 전역변수를 자주 사용하면 코드 관리가 복잡해집니다. 꼭 필요한 경우가 아니라면 되도록 사용하지 않기를 권합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.