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. このPython-2.7テストケースがなぜTrueを返すのですか?
- 3. なぜこの関数はtrueを返しますか?
- 4. なぜこの正規表現はtrueを返しますか?
- 5. なぜこのif文は常にTrueを返しますか?
- 6. なぜこの正規表現はtrueを返しますか?
- 7. (Python)なぜ "ABCDE"の ''がTRUEを返しますか?
- 8. なぜこれは常にtrueを返しますか? jQuery
- 9. なぜこれは常にtrueを返しますか?
- 10. なぜこれがPythonでTrueを返すか
- 11. なぜこのPythonコードはジェネレータオブジェクトを返しますか?ここ
- 12. なぜこのプログラムは原子のリストを返しますか?
- 13. なぜ(true && 1)は1を返しますが、(1 && true)がtrueを返しますか?
- 14. なぜ 'None'でない場合はTrueを返しますか?
- 15. このテストケースではなぜlua string.findがtrueを返しますか?
- 16. なぜこのPythonプログラムは無期限にループしますか?
- 17. なぜこのJavascript RegExpがtrueを返すのですか?
- 18. なぜ$ stmt-> executeは常にtrueを返しますか?
- 19. なぜdocument.implementation.hasFeature()は常にtrueを返しますか?
- 20. なぜPeekMessageは常にTRUEを返しますか?
- 21. なぜ?invalid()は常にTRUEを返しますか?
- 22. なぜ$ varは常にtrueを返しますか?
- 23. なぜstd :: regex_matchは$ patternでtrueを返しませんか?
- 24. int( "True")とfloat( "True")がPythonで動作しないのはなぜですか?
- 25. Python 2.Xでisinstance(nonnewstyle、object)がtrueを返すのはなぜですか?
- 26. この場合、String.contains()がtrueを返さないのはなぜですか?
- 27. なぜonSurfaceView onTouchEvent()でtrueを返しますか?
- 28. なぜ1!= 1がtrueを返しますか?
- 29. なぜNaN =!NaNがtrueを返しますか?
- 30. facebook.isAuthorizedは常にtrueを返すのはなぜですか?
OKフォローアップを、どのように私は外側のxを参照することができます? –
うわー、誰かが私に尋ねる前に答えました:) –
'x = True'を' x = [1] 'に置き換え、' x = False'を 'x [0] = 2'に置き換えて、 .. –