2011-10-31 14 views

答えて

8

グローバル変数は、関数を含むPythonのすべてのローカルスコープで常に使用できます。この場合、main()AB、および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の値を変更すると永続的な変更につながります。

+0

その他のドキュメント:http://docs.python.org/tutorial/classes.html#python-scopes-and-namespaces – ariefbayu

+2

この回答では、「グローバル」は変数の記述に関するものであり、それらを読む。 –

4

関数は、囲みスコープ内の変数を読み取ることができます。 global declarationは、(ローカルディクショナリではなくグローバルディクショナリに書き込むべきであることを示すために)変数を書き込むために使用されます。