検索

ホームページ  >  に質問  >  本文

Python 初心者、関数の問題について

最初のコード:

リーリー

最初のコード実行結果:

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

高洛峰高洛峰2726日前924

全員に返信(4)返信します

  • PHP中文网

    PHP中文网2017-06-12 09:28:03

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

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

    リーリー

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

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

    リーリー

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

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

    返事
    0
  • 仅有的幸福

    仅有的幸福2017-06-12 09:28:03

    1. get_wendu() 是一个函数调用,调用 get_wenduget_wendu 里面 print("您输入的温度是%d"%wendu) 就是打印 wendu このローカル変数の値

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

    返事
    0
  • 阿神

    阿神2017-06-12 09:28:03

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

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

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

      返事
      0
  • 仅有的幸福

    仅有的幸福2017-06-12 09:28:03

    1. print() 関数は標準出力に出力します。

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

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

    返事
    0
  • キャンセル返事