첫 번째 코드:
으아악첫 번째 코드 실행 결과:
두 번째 코드:
으아악두 번째 코드 실행 결과:
두 가지 질문이 있습니다.
첫 번째 질문:
wendu = get_wendu() 명령문이 실행된 이유는 무엇이며 결과는 다음과 같습니다. 입력한 온도는 22입니다. 이는 단순한 할당 명령문이 아닙니다. 뭐? wendu = 22와 마찬가지로 이러한 할당은 인쇄되지 않습니다. wendu = get_wendu()가 결과를 인쇄하는 이유는 무엇입니까? 함수의 인쇄 문이 할당 프로세스 중에 이 내용을 인쇄할 수 있습니까?
두 번째 질문:
첫 번째 코드에서 wendu = wendu + 3이 왜 잘못됐는데, result = wendu + 3으로 바꾸면 성공적으로 실행될 수 있나요? wendu = wendu + 3 문장이 실행될 때 시스템에서 print("입력한 새 온도는 %d"%wendu)를 만나며, 시스템은 wendu가 이전 wendu인지 후속 wendu인지 구분할 수 없기 때문일까요?
첫 번째 질문은 실제로 문의 실행을 이해하지 못한다는 것입니다. Wendu = get_wendu(), get_wendu()는 표현식이고 값을 반환하며 이 값은 wendu 변수에 할당되고 get_wendu () 이 표현식은 함수 본문에 정의된 명령문을 순차적으로 실행하는 실행 함수입니다. print를 쓰면 자연스럽게 print가 실행됩니다.
두 번째 문제는 실제로 로컬 변수와 전역 변수의 차이점을 이해하지 못한다는 것입니다. 인쇄는 전혀 영향을 미치지 않으며 단지 다른 변수 참조로 인해 발생합니다.
으아악먼저 여기서 실행할 수 있는 명령문에 대해 이야기해 보겠습니다.
여기서 wendu 변수는 함수 내부에서 선언 및 정의되지 않고 직접 사용할 수 있습니다. 실제로는 여기에 정의된 변수인 wendu라는 전역 변수를 참조합니다. 이는 또한 인쇄된 결과가 22+3
그리고 명령문을 실행할 수 없습니다wendu = get_wendu()
인 이유를 설명합니다.으아악
새로운 변수 wendu는 실제로 아직 정의되지 않은 함수의 내부 범위에서 선언됩니다. 그러면 wendu+3의 wendu 변수는 이 정의되지 않은 새 변수를 참조하므로 자연스럽게 오류가 발생합니다.get_wendu()
是一个函数调用,调用get_wendu
,get_wendu
里面print("您输入的温度是%d"%wendu)
就是打印wendu
이 지역 변수의 값wendu = wendu + 3
是因为wendu
这个变量还未定义,你就在使用它,由错误信息就可以看出来,UnboundLocalError: local variable 'wendu' referenced before assignment
print("您输入的温度是%d"%wendu)
이 문장은 그냥 인쇄에 관한 문장 아닌가요Python은 기본적으로 현재 범위에서 변수를 찾습니다. 현재 범위에는
wendu
这个变量自然也就报错了。你可以在wendu = wendu + 3
前加上一句nonlocal wendu
가 없으므로 정상적으로 실행될 수 있습니다print() 함수는 표준 출력으로 인쇄합니다.
으아악오류 메시지는
으아악Local variable 'wendu' referenced before assignment
입니다. 이는 호출 전에 wendu 변수가 사용되지 않았음을 의미합니다. 이 오류 메시지를 번역하면 충격을 받을 것이라고 믿습니다. 이름은 wendu = get_wendu()에 선언되어 있지만 '아니요'라고 되어 있지만 컴퓨터는 = =, =가 할당에 사용된다고 생각하는 것만큼 전력이 낮지 않습니다. wendu가 무엇인지 알아야합니다.이유는 함수 내 변수 할당의 경우 Python이 이 변수를 지역 변수로 간주하므로 wendu는 현재 전역 변수가 아닌 지역 변수이기 때문입니다.
이렇게 수정해 볼 수 있습니다
변수 이름에 Pinyin을 사용하지 마세요. 변수 이름에 Pinyin을 사용하지 마세요. 변수 이름에 Pinyin을 사용하지 마세요. 요구 사항에 따라 전역 변수를 최대한 적게 사용하는 것이 좋습니다.