これを試してみてください:Pythonのグローバルネームスペースと評価順
はA = 1
B = 2
C = A + B
def main():
global C
print A
main()
の出力は1
です。
これはなぜですか?なぜmain
は、評価するために使用される他のグローバル変数について知るべきですかC
?
これを試してみてください:Pythonのグローバルネームスペースと評価順
はA = 1
B = 2
C = A + B
def main():
global C
print A
main()
の出力は1
です。
これはなぜですか?なぜmain
は、評価するために使用される他のグローバル変数について知るべきですかC
?
グローバル変数は、関数を含むPythonのすべてのローカルスコープで常に使用できます。この場合、main()
A
、B
、およびC
のすべてが範囲内にあります。
global
キーワードは、あなたが思うようにはしません。むしろ、ローカルスコープがグローバル関数を操作できるようにします(グローバル変数を "書き込み可能"にします)。これらの例を考えてみます。ここでは
c = 4
print c
def foo():
c = 3
print c
foo()
print c
は、出力は今
4
3
4
なり、このことを考慮してください。この場合、
c = 4
print c
def foo():
global c
c = 3
print c
foo()
print c
は、出力されます
4
3
3
最初のケースでは、c = 3
は、そのスコープがアップするまで(すなわち、関数定義が終了したとき)。 2番目のケースでは、global c
と書いた後、実際にはグローバルc
への参照を参照しているため、c
の値を変更すると永続的な変更につながります。
関数は、囲みスコープ内の変数を読み取ることができます。 global declarationは、(ローカルディクショナリではなくグローバルディクショナリに書き込むべきであることを示すために)変数を書き込むために使用されます。
その他のドキュメント:http://docs.python.org/tutorial/classes.html#python-scopes-and-namespaces – ariefbayu
この回答では、「グローバル」は変数の記述に関するものであり、それらを読む。 –