全域變數是在函數外部定義和宣告的變量,我們需要在函數內部使用它們。
#这个函数使用全局变量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」關鍵字。如果我們想要進行分配/更改它們,我們只需要在函數中使用全域關鍵字。列印和存取不需要全域。
Python「假設」我們想要一個局部變量,因為f()內部的賦值,所以第一個print語句拋出此錯誤訊息。在函數內部更改或創建的任何變數都是本地的,如果它尚未聲明為全域變數。要告訴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 = 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中文網其他相關文章!