변수는 개체에 매핑되는 이름(식별자)입니다. 네임스페이스는 변수 이름(키)과 해당 개체(값)의 사전입니다.
Python 문은 로컬 네임스페이스와 전역 네임스페이스의 변수에 액세스할 수 있습니다. 지역 변수와 전역 변수의 이름이 같으면 지역 변수가 전역 변수를 가립니다.
각 함수에는 고유한 로컬 네임스페이스가 있습니다. 클래스 메소드는 일반 함수와 동일한 범위 지정 규칙을 따릅니다.
Python은 변수가 로컬인지 전역인지에 대해 교육받은 추측을 합니다. 함수에서 값이 할당된 모든 변수는 로컬이라고 가정합니다.
따라서 함수 내에서 전역 변수에 값을 할당하려면 먼저 전역 문을 사용해야 합니다.
global VarName 문은 VarName이 전역 변수임을 Python에 알립니다. Python은 변수에 대한 로컬 네임스페이스 검색을 중지합니다.
예를 들어 전역 네임스페이스에 변수 Money를 정의합니다. Money 함수 내에서 Money 값을 할당하므로 Python은 Money를 지역 변수로 가정합니다. 그러나 설정하기 전에 지역 변수 Money의 값에 액세스했기 때문에 UnboundLocalError가 결과입니다. 전역 구문의 주석 처리를 제거하면 문제가 해결됩니다.
#!/usr/bin/python Money = 2000 def AddMoney(): # Uncomment the following line to fix the code: # global Money Money = Money + 1 print Money AddMoney() print Money