最初のコード:
リーリー最初のコード実行結果:
2 番目のコード:
リーリー2 番目のコードの実行結果:
質問が 2 つあります:
最初の質問:
ステートメント wendu = get_wendu() が実行されるのはなぜですか? 結果は次のとおりです。 : 入力した温度は 22 です。これは単なる代入文ではありませんか? wendu = 22 と同様に、そのような代入は出力されません。なぜ wendu = get_wendu() は結果を出力するのでしょうか? 関数内の print ステートメントが代入プロセス中にこれを出力する可能性がありますか?
2 番目の質問:
コードの最初の部分で 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 が実行されます。
2 番目の問題は、実際には、ローカル変数とグローバル変数の違いを理解していないことです。印刷はまったく影響がなく、単に変数参照が異なることが原因です。
リーリーまず、ここで実行できるステートメントについて説明します。
ここでは、変数 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)
この文章はただの印刷ではないでしょうか?wendu
这个变量自然也就报错了。你可以在wendu = wendu + 3
前加上一句nonlocal wendu
。print() 関数は標準出力に出力します。
リーリーエラー メッセージは
リーリーLocal variable 'wendu' referenced before assignment
です。これは、呼び出し前に wendu 変数が使用されなかったことを意味します。このエラー メッセージを翻訳するとショックを受けると思います。名前は wendu = get_wendu() で宣言されていますが、「いいえ」と表示されていますが、コンピューターは、割り当てに = =、= が使用されていると考えられるほど低能力ではありません。どちらがウェンドゥなのかを知る必要があります。その理由は、関数内の変数割り当ての場合、Python はこの変数をローカル変数と見なすため、現時点では wendu はローカル変数であり、グローバル変数ではありません
次のように変更してみてください
変数名にピンインを使用しないでください。変数名にピンインを使用しないでください。変数名にピンインを使用しないでください。要件に応じて、グローバル変数の使用は最小限に抑え、パラメータを渡すことを選択することをお勧めします。