전역 변수는 매개변수 전달 정신을 따르지 않기 때문에 상수를 정의하지 않는 이상 거의 사용하지 않습니다. 오늘 동료가 전역 변수에 관해 질문을 했고, 그렇게 할 수 있는 방법이 있다는 것을 알게 되었습니다.
프로그램은 대략 다음과 같습니다.
CONSTANT = 0 def modifyConstant() : print CONSTANT CONSTANT += 1 return if __name__ == '__main__' : modifyConstant() print CONSTANT
실행 결과는 다음과 같습니다.
UnboundLocalError: 할당 전에 참조된 지역 변수 'CONSTANT'
수정컨스턴트 함수에서 전역변수가 지역변수가 된 것 같은데요. 전역변수가 적용되지 않는 것 같은데요?
일부 수정:
CONSTANT = 0 def modifyConstant() : print CONSTANT #CONSTANT += 1 return if __name__ == '__main__' : modifyConstant() print CONSTANT
함수 내부에서 전역변수에 접근이 가능한 것 같습니다.
그래서 문제는 변수 CONSTANT가 함수 내에서 수정되기 때문에 Python은 CONSTANT를 지역 변수로 간주하고 인쇄 CONSTANT가 CONSTANT += 1 이전이므로 당연히 이런 오류가 발생한다는 것입니다.
그렇다면 함수 내에서 전역 변수에 어떻게 접근하고 수정하나요? 변수를 수정하려면 global 키워드를 사용해야 합니다(PHP와 유사).
CONSTANT = 0 def modifyConstant() : global CONSTANT print CONSTANT CONSTANT += 1 return if __name__ == '__main__' : modifyConstant() print CONSTANT