Python學習之函數(全局變量和局部變量)

全局變量和局部變量
全局變量,顧名思義,就是爲整個程序塊服務的。
局部變量,顧名思義,就是爲整個程序中的某一個程序塊兒服務的。
示例:

>>> a = 10
>>> def add(a,b):
...     a = 5
...     c = a + b
...     print "This a: " + str(a)+ " is a inner varible"
...     print "---------------------------"
... 
>>> add(a,3)
This a: 5 is a inner varible
---------------------------
>>> print a
10
>>> print "This a: " + str(a) + " is a outer varible"
This a: 10 is a outer varible
>>> 

發現,在定義函數add之外的a爲外部變量,在定義的函數add內的a是內部變量,函數內部定義的a的作用範圍只是在定義的函數體結束就失去意義了,而外部的a依然沒有受到影響。
但是這兩個變量雖然位置不同,但是兩個變量都相互不影響,它們在各自的作用域內實現自己的價值。

思考,該如何定義一個全局變量呢?
在Python中,定義一個全局變量需要使用一個關鍵字global也就是全局的意思。
來看看文檔中對於global的解釋:
The global statement


global_stmt ::= “global” identifier (“,” identifier)*

The global statement is a declaration which holds for the entire
current code block. It means that the listed identifiers are to be
interpreted as globals. It would be impossible to assign to a global
variable without global, although free variables may refer to
:
解釋:“全局”語句是一個適用於整個語句的聲明
當前代碼塊。 這意味着列出的標識符是
爲全局變量,它不可能給沒有global的表示符分配一個全局變量,儘管自由變量可以引用。
1、將全局變量放在函數外

>>> global a
>>> a = 10
>>> def add(a,b):
...     a = 5
...     c = a + b
...     print "This a: " + str(a) + " is a inner varible"
...     print "----------------------------------------"
... 
>>> add(a,0)
This a: 5 is a inner varible
----------------------------------------
>>> print "This a: " + str(a) + " is a outer varible"
This a: 10 is a outer varibl
>>> 

2、將全局變量放在函數內

>>> x = 4
>>> def sub(y):
...     global x
...     x = 7
...     z = x * y
...     print "This x is : " + str(x) + " is a inner varible !"
...     print "------------------------------------------"
... 
>>> sub(5)
This x is : 7 is a inner varible !
------------------------------------------
>>> print "This x is : " + str(x) + " is a outer varible !"
This x is : 7 is a outer varible !
>>> 

經過測試,發現無論變量在函數體內還是在定義的函數外,只要被披上global的衣服,它就是作用與整個代碼塊兒。
最後,注意,這個全局變量要謹慎使用,用法不當會很容以造成代碼閱讀混亂!

完成於2017年05 月 18 號
晚上 20:49

發佈了47 篇原創文章 · 獲贊 16 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章