이름을 찾는 범위와 지역 변수의 장점을 이해합니다.
Python은 Local, Enclosing, Global, Built-in 순서로 이름을 찾습니다. 함수 안 대입은 기본적으로 지역 이름을 만들며 바깥 값을 읽을 수는 있어도 대입하려면 별도 선언이 필요합니다.
calculate_tax는 전역 tax_rate를 직접 읽지 않고 rate 매개변수로 받습니다. 함수 안의 tax는 호출이 끝나면 사라지는 지역 이름이고, 50_000에 0.1을 곱한 5000.0이 반환되어 출력됩니다. 숫자 사이의 밑줄은 자릿수를 읽기 쉽게 하는 표기일 뿐 값에는 영향이 없습니다.
global과 nonlocal은 바깥 상태를 직접 변경하지만 데이터 흐름을 추적하기 어렵게 만들 수 있습니다. 가능하면 매개변수로 받고 반환값으로 돌려줍니다.
설정과 의존성을 전역에서 읽는 대신 함수나 객체에 주입하면 테스트마다 독립적인 환경을 만들기 쉽습니다.
지역 변수와 같은 이름의 전역 변수가 있을 때 둘이 자동으로 연결된다고 생각하지 마세요.
직접 바꿔보세요tax_rate를 함수 매개변수로 옮겨 전역 의존성을 없애보세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.