當你在函數定義內聲明變量的時候,它們與函數外具備相同名稱的其餘變量沒有任何關係,即變量名稱對於函數來講是 局部 的。這稱爲變量的 做用域 。全部變量的做用域是它們被定義的塊,從它們的名稱被定義的那點開始。python
#!/usr/bin/Python
# Filename: func_local.pydef
func
(x):
print
'x is'
, x
x =
2
print
'Changed local x to'
, x
x =
50
func(x)
print
'x is still'
, x
函數
(源文件:code/func_local.py)spa
$ python func_local.py
code
x is 50
Changed local x to 2
x is still 50
在函數中,咱們第一次使用x
的 值 的時候,Python使用函數聲明的形參的值。ci
接下來,咱們把值2
賦給x
。x
是函數的局部變量。因此,當咱們在函數內改變x
的值的時候,在主塊中定義的x
不受影響。作用域
在最後一個print
語句中,咱們證實了主塊中的x
的值確實沒有受到影響。get
若是你想要爲一個定義在函數外的變量賦值,那麼你就得告訴Python這個變量名不是局部的,而是 全局 的。咱們使用global
語句完成這一功能。沒有global
語句,是不可能爲定義在函數外的變量賦值的。it
你能夠使用定義在函數外的變量的值(假設在函數內沒有同名的變量)。然而,我並不鼓勵你這樣作,而且你應該儘可能避免這樣作,由於這使得程序的讀者會不清楚這個變量是在哪裏定義的。使用global
語句能夠清楚地代表變量是在外面的塊定義的。class
#!/usr/bin/python
# Filename: func_global.pydef
func
():
global
x
print
'x is'
, x
x =
2
print
'Changed local x to'
, x
x =
50
func()
print
'Value of x is'
, x
(源文件:code/func_global.py)
$ python func_global.py
x is 50
Changed global x to 2
Value of x is 2
global
語句被用來聲明x
是全局的——所以,當咱們在函數內把值賦給x
的時候,這個變化也反映在咱們在主塊中使用x
的值的時候。
你能夠使用同一個global
語句指定多個全局變量。例如global x, y, z
。