이름을 찾는 범위와 지역 변수의 장점을 이해합니다.
Python은 Local, Enclosing, Global, Built-in 순서로 이름을 찾습니다. 함수 안 대입은 기본적으로 지역 이름을 만들며 바깥 값을 읽을 수는 있어도 대입하려면 별도 선언이 필요합니다.
예제에서 local → enclosing → global → built-in 부분부터 찾으세요. 값을 만드는 표현식과 그 값을 다음 문장으로 넘기는 흐름을 한 줄씩 따라가면 실행 결과를 스스로 설명할 수 있습니다.
global과 nonlocal은 바깥 상태를 직접 변경하지만 데이터 흐름을 추적하기 어렵게 만들 수 있습니다. 가능하면 매개변수로 받고 반환값으로 돌려줍니다.
설정과 의존성을 전역에서 읽는 대신 함수나 객체에 주입하면 테스트마다 독립적인 환경을 만들기 쉽습니다.
이 코드는 브라우저의 실제 Python에서 실행됩니다. 먼저 현재 결과를 확인한 뒤 tax_rate를 함수 매개변수로 옮겨 전역 의존성을 없애보세요.
지역 변수와 같은 이름의 전역 변수가 있을 때 둘이 자동으로 연결된다고 생각하지 마세요.
직접 바꿔보세요tax_rate를 함수 매개변수로 옮겨 전역 의존성을 없애보세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.