Python 초보자, 함수 문제에 대해
高洛峰
高洛峰 2017-06-12 09:26:03
0
4
957

첫 번째 코드:

으아악

첫 번째 코드 실행 결과:

두 번째 코드:

으아악

두 번째 코드 실행 결과:

두 가지 질문이 있습니다.
첫 번째 질문:
wendu = get_wendu() 명령문이 실행된 이유는 무엇이며 결과는 다음과 같습니다. 입력한 온도는 22입니다. 이는 단순한 할당 명령문이 아닙니다. 뭐? wendu = 22와 마찬가지로 이러한 할당은 인쇄되지 않습니다. wendu = get_wendu()가 결과를 인쇄하는 이유는 무엇입니까? 함수의 인쇄 문이 할당 프로세스 중에 이 내용을 인쇄할 수 있습니까?
두 번째 질문:
첫 번째 코드에서 wendu = wendu + 3이 왜 잘못됐는데, result = wendu + 3으로 바꾸면 성공적으로 실행될 수 있나요? wendu = wendu + 3 문장이 실행될 때 시스템에서 print("입력한 새 온도는 %d"%wendu)를 만나며, 시스템은 wendu가 이전 wendu인지 후속 wendu인지 구분할 수 없기 때문일까요?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(4)
洪涛

첫 번째 질문은 실제로 문의 실행을 이해하지 못한다는 것입니다. Wendu = get_wendu(), get_wendu()는 표현식이고 값을 반환하며 이 값은 wendu 변수에 할당되고 get_wendu () 이 표현식은 함수 본문에 정의된 명령문을 순차적으로 실행하는 실행 함수입니다. print를 쓰면 자연스럽게 print가 실행됩니다.

두 번째 문제는 실제로 로컬 변수와 전역 변수의 차이점을 이해하지 못한다는 것입니다. 인쇄는 전혀 영향을 미치지 않으며 단지 다른 변수 참조로 인해 발생합니다.
먼저 여기서 실행할 수 있는 명령문에 대해 이야기해 보겠습니다.

으아악

여기서 wendu 변수는 함수 내부에서 선언 및 정의되지 않고 직접 사용할 수 있습니다. 실제로는 여기에 정의된 변수인 wendu라는 전역 변수를 참조합니다. 이는 또한 인쇄된 결과가 22+3wendu = get_wendu()인 이유를 설명합니다.

그리고 명령문을 실행할 수 없습니다

으아악

새로운 변수 wendu는 실제로 아직 정의되지 않은 함수의 내부 범위에서 선언됩니다. 그러면 wendu+3의 wendu 변수는 이 정의되지 않은 새 변수를 참조하므로 자연스럽게 오류가 발생합니다.

전역 범위와 지역 범위를 이해하면 어디에서 실수가 있는지 알 수 있습니다.

仅有的幸福
  1. get_wendu() 是一个函数调用,调用 get_wenduget_wendu 里面 print("您输入的温度是%d"%wendu) 就是打印 wendu 이 지역 변수의 값

  2. wendu = wendu + 3 是因为 wendu 这个变量还未定义,你就在使用它,由错误信息就可以看出来,UnboundLocalError: local variable 'wendu' referenced before assignment

阿神
  1. print("您输入的温度是%d"%wendu) 이 문장은 그냥 인쇄에 관한 문장 아닌가요

  2. Python은 기본적으로 현재 범위에서 변수를 찾습니다. 현재 범위에는 wendu 这个变量自然也就报错了。你可以在 wendu = wendu + 3 前加上一句 nonlocal wendu가 없으므로 정상적으로 실행될 수 있습니다

仅有的幸福
  1. print() 함수는 표준 출력으로 인쇄합니다.

    으아악
  2. 오류 메시지는 Local variable 'wendu' referenced before assignment입니다. 이는 호출 전에 wendu 변수가 사용되지 않았음을 의미합니다. 이 오류 메시지를 번역하면 충격을 받을 것이라고 믿습니다. 이름은 wendu = get_wendu()에 선언되어 있지만 '아니요'라고 되어 있지만 컴퓨터는 = =, =가 할당에 사용된다고 생각하는 것만큼 전력이 낮지 않습니다. wendu가 무엇인지 알아야합니다.
    이유는 함수 내 변수 할당의 경우 Python이 이 변수를 지역 변수로 간주하므로 wendu는 현재 전역 변수가 아닌 지역 변수이기 때문입니다.
    이렇게 수정해 볼 수 있습니다

    으아악
  3. 변수 이름에 Pinyin을 사용하지 마세요. 변수 이름에 Pinyin을 사용하지 마세요. 변수 이름에 Pinyin을 사용하지 마세요. 요구 사항에 따라 전역 변수를 최대한 적게 사용하는 것이 좋습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿