x=True
def stupid():
x=False
stupid()
print x
答えて
Pythonで関数ローカル変数を宣言する必要はありません。 "x = False"は、stupid()のローカルxを参照しています。あなたは本当に愚かな内部グローバルのxを変更したい場合:
def stupid():
global x
x=False
関数内で 'print x'を実行した場合、グローバル' x'を使用することに注意してください。新しいローカル変数を作成するのは*割り当て*だけです。 – quark
愚かな機能(中x)は、あなたが本当にXという名前の2つの変数を持っているので、ローカル変数です。
xのスコープはstupid()関数のローカルなので、いったん関数を呼び出して終了すると、範囲外になり、stupid()関数の外で定義された "x"の値を出力します。の中に定義されているxは関数stupidのです(その関数が終了すると)()はもうスタック上にあなたのコメントの後に
編集が存在しません:あなたはそれを印刷したときに
を外 Xは、あなたがやったように、参照されています。
xは、関数stupid()内でのみ参照できます。その関数の内部にxを入れることができます。約
それは&作品
- は、すべてのことが多い
- 原因の読みやすさとスケーラビリティの問題を使用することを明らかに、
- ない良いアイデア質問に答える「グローバル」(および潜在的により)
- プロジェクトによっては、ローカル関数内で定義されたグローバル変数を使用して再考することができます。
x = Falseの前に "global x"を追加するとTrueが出力されます。それ以外の場合は、2つの "x"があり、それぞれ異なるスコープにあります。
global
を使用し、あなたの次の質問に答えるために:
x=True
def stupid():
global x
x=False
stupid()
print x
ハハ先制的な返事。 – Triptych
あなたはPythonでメソッドからグローバル変数xにアクセスしたい場合は、あなたが明示的に実行する必要があります。
x=True
def stupid():
global x
x=False
stupid()
print x
そこに奇妙な出来上がり。 :( – Stobor
x
をstupid()
に割り当てているため、Pythonはをstupid()
に新しく作成します。- あなただけ
stupid()
内x
からを読んでいた場合、Pythonは実際にあなたが望んでいるグローバルx
を使用します。 - グローバルに
x
を使用するようにPythonを強制するには、最初の行にglobal x
を追加してstupid()
を挿入します。
そのコードはしかし、すべての関数内であれば、x
は、グローバル変数ではないので、global
は、仕事に行くのではありません。 Pythonの3.xのでは、彼らは関係なく、それはトップレベルで、または関数の内部であるかどうかのコードの作業になるだろうnonlocal
キーワード、導入:
x=True
def stupid():
nonlocal x
x=False
stupid()
print x
- 1. なぜこの正規表現はtrueを返しますか?
- 2. なぜこれは常にtrueを返しますか?
- 3. なぜ(true && 1)は1を返しますが、(1 && true)がtrueを返しますか?
- 4. このテストケースではなぜlua string.findがtrueを返しますか?
- 5. なぜPeekMessageは常にTRUEを返しますか?
- 6. この場合、String.contains()がtrueを返さないのはなぜですか?
- 7. なぜonSurfaceView onTouchEvent()でtrueを返しますか?
- 8. "hello"> 0がTRUEを返すのはなぜですか?
- 9. re.match( "c"、 "cat")がtrueを返すのはなぜですか?
- 10. なぜ1.2ですか?Boolean(1.2)が実際にtrueの場合、== trueはfalseを返しますか?
- 11. なぜこの "[:: - 1]"はPythonで逆のリストを返しますか?
- 12. なぜ次のjavascript関数は常にtrueを返しますか?
- 13. file.getAbsolutePath()ではNullPointerExceptionがtrueを返しますが、file.exists()はtrueを返します
- 14. mysql_query()はtrueを返しますか?
- 15. PHPでは、変数に値がない場合、なぜisset()はTRUEを返すのですか?ここ
- 16. なぜTRUE == "R"の "TRUE"はTRUEですか?
- 17. PHP "trueなら"配列のテストは常にtrueを返しますか?
- 18. なぜPython(2.7)またはブール演算子がTrueを間違って返すのですか?
- 19. MS VC++ 6:trueではなくfalseを返すのはなぜですか?
- 20. なぜこのParallel.ForEachコードはプログラムをフリーズしますか?
- 21. なぜこの関数はポインタを返しますか?
- 22. このSPARQLクエリはなぜタイトルを返しますか?
- 23. なぜこの関数はNaNを返しますか?
- 24. なぜこのmysqlクエリはnullだけを返しますか?
- 25. なぜこのIF THEN SQL文はエラーを返しますか?
- 26. なぜServiceStackはこの設定で404を返しますか?
- 27. なぜこのコードセクションは "セグメンテーションフォールト"エラーを返しますか?
- 28. なぜPythonのdict.keys()はリストではなく、セットを返しますか?
- 29. このインラインイベントハンドラの後にfalseが返され、trueが返されるのはなぜですか?
- 30. この再帰プログラムはなぜ機能しますか?
OKフォローアップを、どのように私は外側のxを参照することができます? –
うわー、誰かが私に尋ねる前に答えました:) –
'x = True'を' x = [1] 'に置き換え、' x = False'を 'x [0] = 2'に置き換えて、 .. –