함수 호출이 전역 변수를 업데이트하지 않음
이 질문은 처음에 False로 할당된 전역 변수가 업데이트되지 않는 프로그래밍 문제를 탐구합니다. 함수 내에서 참조될 때 업데이트되지 않습니다. 전역 변수의 값을 변경하는 함수에도 불구하고 기본 프로그램의 루프는 계속 실행되어 무한 루프가 발생합니다. 이 문제를 이해하려면 네임스페이스 및 변수 범위 지정의 개념을 자세히 살펴봐야 합니다.
네임스페이스 및 변수 범위
프로그래밍에서 모든 함수와 모듈은 자체 네임스페이스를 만듭니다. 네임스페이스는 해당 범위 내에서 알려져 있고 액세스할 수 있는 이름(변수, 함수 등)의 모음입니다. 함수 내에서 변수에 값을 할당하면 같은 이름의 전역 변수가 있더라도 함수의 네임스페이스에 새 변수가 생성됩니다.
전역 변수 사용
이 경우 함수 내에서 "done"이라는 전역 변수가 참조되면 함수의 네임스페이스에 동일한 이름의 새 지역 변수가 생성됩니다. 이 로컬 "완료"는 전역 "완료"와 다릅니다. 로컬 "완료"를 변경해도 전역 변수에는 아무런 영향이 없습니다.
해결책
이를 극복하려면 전역 키워드를 사용하여 전역 변수를 명시적으로 참조해야 합니다. 기능. 전역 완료를 사용하면 이 함수는 통역사에게 새 로컬 변수를 만드는 대신 전역 "완료" 변수에 액세스하라고 지시합니다.
수정된 코드
문제를 해결하려면 , 함수는 다음과 같이 수정될 수 있습니다:
def function():
global done
for loop:
code
if not comply:
done = True
설명
global done을 사용하면 함수 내에서 사용되는 변수와 전역 변수 사이의 연결이 설정됩니다. 함수가 done 값을 수정하면 처음에 참조된 것과 동일한 전역 변수가 업데이트됩니다. 이렇게 하면 함수가 완료를 True로 설정할 때 기본 프로그램의 while 루프가 의도한 대로 종료됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3