Python 初心者、関数の問題について
高洛峰
高洛峰 2017-06-12 09:26:03
0
4
950

最初のコード:

リーリー

最初のコード実行結果:

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 であるかを判断できないためですか?

高洛峰
高洛峰

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

全員に返信(4)
洪涛

最初の質問は、Wendu = get_wendu()、get_wendu() は式であり、値を返し、この値は wendu 変数に割り当てられ、get_wendu というステートメントの実行が理解できないということです。 () この式は実行関数であり、関数本体に定義されたステートメントを順番に実行します。この中に print を記述すると、当然 print が実行されます。

2 番目の問題は、実際には、ローカル変数とグローバル変数の違いを理解していないことです。印刷はまったく影響がなく、単に変数参照が異なることが原因です。
まず、ここで実行できるステートメントについて説明します。

リーリー

ここでは、変数 wendu は関数内で宣言および定義されていませんが、実際には、ここで定義された変数であるグローバル変数 wendu を参照しています。これは、出力された結果が 22+3 である理由も説明していますwendu = get_wendu()

そしてステートメントを実行することはできません

リーリー

新しい変数 wendu は実際にはまだ定義されていない関数の内部スコープで宣言されています。その後、wendu+3 の wendu 変数はこの未定義の新しい変数を参照するため、当然エラーが発生します。

グローバル スコープとローカル スコープを理解すると、どこが間違っているかがわかります。

いいねを押す +0
仅有的幸福
  1. get_wendu() 是一个函数调用,调用 get_wenduget_wendu 里面 print("您输入的温度是%d"%wendu) 就是打印 wendu このローカル変数の値

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

いいねを押す +0
阿神
  1. print("您输入的温度是%d"%wendu)この文章はただの印刷ではないでしょうか?

  2. Python はデフォルトで現在のスコープ内の変数を探します。現在のスコープには
  3. がないため、通常通り実行できます

    wendu 这个变量自然也就报错了。你可以在 wendu = wendu + 3 前加上一句 nonlocal wendu

いいねを押す +0
仅有的幸福
  1. print() 関数は標準出力に出力します。

    リーリー
  2. エラー メッセージは Local variable 'wendu' referenced before assignment です。これは、呼び出し前に wendu 変数が使用されなかったことを意味します。このエラー メッセージを翻訳するとショックを受けると思います。名前は wendu = get_wendu() で宣言されていますが、「いいえ」と表示されていますが、コンピューターは、割り当てに = =、= が使用されていると考えられるほど低能力ではありません。どちらがウェンドゥなのかを知る必要があります。
    その理由は、関数内の変数割り当ての場合、Python はこの変数をローカル変数と見なすため、現時点では wendu はローカル変数であり、グローバル変数ではありません
    次のように変更してみてください

    リーリー
  3. 変数名にピンインを使用しないでください。変数名にピンインを使用しないでください。変数名にピンインを使用しないでください。要件に応じて、グローバル変数の使用は最小限に抑え、パラメータを渡すことを選択することをお勧めします。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート