Pythonのグローバル変数とローカル変数

グローバル変数は、関数の外側で定義および宣言されている変数であり、関数の内側で使用する必要があります。

🐶Pythonコードの例を示すで

# This function uses global variable s
def f():  
    print s  

# Global scope
s = "I love coderecipe"
f()

🐶動画で動作確認してみよか?

動画で確認

同じ名前の変数がfunctionの有効範囲内でも定義されている場合は、グローバル値ではなく、関数内に指定された値のみが表示されます。

🐶Pythonコードの例を示すで

# This function has a variable with
# name same as s.
def f():  
    s = "Me too."
    print s  

# Global scope
s = "I love coderecipe"
f()
print s

🐶動画で動作確認してみよか?

動画で確認

関数s()を呼び出す前に、変数sは文字列 "codesforcodesが大好きです"として定義されています。 f()の中の唯一のステートメントは“ print s”ステートメントです。ローカルのsがないので、グローバルのsの値が使用されます。 問題は、関数f()の内部でsの値を変更するとどうなるかということです。それは世界の人々にも影響を与えますか?次のコードでテストします。

🐶Pythonコードの例を示すで

def f():  
    print s

    # This program will NOT show error
    # if we comment below line.  
    s = "Me too."

    print s

# Global scope
s = "I love coderecipe"
f()
print s

🐶動画で動作確認してみよか?

動画で確認

上記のプログラムを機能させるには、 "global"キーワードを使用する必要があります。割り当て/変更をしたい場合は、関数内でglobalキーワードを使用するだけです。 globalは表示やアクセスには必要ありません。どうして? Pythonは、f()内のsへの代入のためにローカル変数が必要であると仮定しているため、最初のprintステートメントはこのエラーメッセージをスローします。グローバル変数として宣言されていない場合、関数内で変更または作成された変数はすべてローカルです。グローバル変数を使いたいことをPythonに伝えるには、次の例に示すように、キーワード“ global”を使う必要があります。

🐶Pythonコードの例を示すで

# This function modifies global variable 's'
def f():
    global s
    print s
    s = "Look for coderecipe Python Section"
    print s  

# Global Scope
s = "Python is great!"
f()
print s  

🐶動画で動作確認してみよか?

動画で確認

今、あいまいさはありません。

良い例

🐶Pythonコードの例を示すで

a = 1

# Uses global because there is no local 'a'
def f():
    print 'Inside f() : ', a

# Variable 'a' is redefined as a local
def g():     
    a = 2
    print 'Inside g() : ',a

# Uses global keyword to modify global 'a'
def h():     
    global a
    a = 3
    print 'Inside h() : ',a

# Global scope
print 'global : ',a
f()
print 'global : ',a
g()
print 'global : ',a
h()
print 'global : ',a

🐶動画で動作確認してみよか?

動画で確認

🐶 🐍

Last Updated: 5/19/2019, 1:43:17 AM