ホームページ  >  記事  >  バックエンド開発  >  Pythonのグローバル変数とローカル変数の違い(詳細コード解説)

Pythonのグローバル変数とローカル変数の違い(詳細コード解説)

藏色散人
藏色散人オリジナル
2019-03-16 14:16:095865ブラウズ

Pythonのグローバル変数とローカル変数の違い(詳細コード解説)

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

#这个函数使用全局变量s
def f():  
    print s  
  
# 全局作用域
s = "I love Python"
f()

出力:

I love Python

同じ名前の変数が関数スコープ内で定義されている場合、グローバル値ではなく、関数内で指定された値のみが出力されます。

# 这个函数有一个与s同名的变量。
def f():  
    s = "Me too."
    print s  
  
# 全局作用域
s = "I love Python" 
f() 
print s

出力:

Me too
I love Python

関数 f() を呼び出す前に、変数 s を文字列「I love Python」として定義します。 f() 内の唯一のステートメントは、「print s」ステートメントです。ローカル s がないため、グローバル s の値が使用されます。

問題は、関数 f() 内の s の値を変更するとどうなるかということです。全体的な状況に影響はありますか?

次のコードでテストします。

def f():  
    print s 
  
    # 如果我们在下面评论,这个程序不会显示错误。
    s = "Me too."
  
    print s 
  
#全局作用域
s = "I love Python" 
f() 
print s

出力:

Line 2: undefined: Error: local variable 's' referenced before assignment

上記のプログラムが動作するには、「global」キーワードを使用する必要があります。それらを割り当て/変更したい場合は、関数内で global キーワードを使用するだけです。印刷とアクセスにはグローバルは必要ありません。

Python では、ローカル変数が必要であると「想定」しているため、最初の print ステートメントでは、f() 内の代入が原因でこのエラー メッセージがスローされます。関数内で変更または作成された変数は、グローバル変数として宣言されていない場合、ローカルになります。 Python にグローバル変数を使用するように指示するには、キーワード「global」を使用する必要があります。

次の例に示すように:

# 这个函数修改全局变量's' 
def f(): 
    global s 
    print s 
    s = "Look for Python"
    print s  
  
#全局作用域
s = "Python is great!" 
f() 
print s

出力:

Python is great!
Look for Python.
Look for Python.

A nice例:

a = 1
  
# 使用global,因为没有本地'a' 
def f(): 
    print 'Inside f() : ', a 
  
#变量“a”被重新定义为局部变量
def g():     
    a = 2
    print 'Inside g() : ',a 
  
#使用全局关键字修改全局'a'
def h():     
    global a 
    a = 3
    print 'Inside h() : ',a 
  
# 全局作用域
print 'global : ',a 
f() 
print 'global : ',a 
g() 
print 'global : ',a 
h() 
print 'global : ',a

出力:

global :  1
Inside f() :  1
global :  1
Inside g() :  2
global :  1
Inside h() :  3
global :  3

関連する推奨事項: 「Python チュートリアル

以上がPythonのグローバル変数とローカル変数の違い(詳細コード解説)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。