變量作用域
通常在函數體外定義的量成爲全局變量,在函數內部定義的變量稱爲局部變量。
全局變量全部做用域均可用,局部變量只能在本函數可用,變量的使用順序是,局部變量 > 全局變量, 也就是說:優先使用局部變量
那麼問題來了,若是想在函數內使用全局變量,或改變全局變量的值,應該怎麼作呢?
Global關鍵詞
爲了解決函數內使用全局變量的問題,python增長了global關鍵字,利用他的特性,能夠指定變量的做用域。Global關鍵字的做用:聲明變量var是全局的
代碼實例
實例1
函數優先使用局部變量
str = 'global'
def func1():
str = 'local'
print(str)
func1()
print(str)
結果
local
global
實例2
在沒有局部變量的狀況下,使用全局變量
str = 'global'
def func1():
print(str)
func1()
print(str)
結果:
global
global
實例3:
改變全局變量的值,經過實例1能夠看到,函數內賦值並不能改變全局變量的值,因此須要global關鍵字
str = 'global'
def func1():
global str
str = 'local'
print(str)
func1()
print(str)
結果:
local
local
其餘用法
你能夠使用同一個global語句指定多個全局變量
例如
global var1, var2, var3
特殊類型
字符串,數字類型是不能在局部被修改的,除非使用global關鍵字,可是列表字典是可修改,但不能從新賦值。若是須要從新賦值,須要在函數內部使用global定義全局變量
代碼實例1
list = ['global', 'pythontab.com']
def func1():
list.append('bbs.pythontab.com')
print(list)
func1()
print(list)
結果:
['global', 'pythontab.com', 'bbs.pythontab.com']
['global', 'pythontab.com', 'bbs.pythontab.com']
發現上面的list並無使用global可是值卻改變了,說明列表是能夠在局部被修改的
代碼實例2:
list = ['global', 'pythontab.com']
def func1():
list = ['docs.pythontab.com']
print(list)
func1()
print(list
結果:
['docs.pythontab.com']
['global', 'pythontab.com']
局部變量賦值不能改變全局變量的值
代碼實例3
list = ['global', 'pythontab.com']
def func1():
global list
list = 'docs.pythontab.com'
print(list)
func1()
print(list)
結果:
docs.pythontab.com
docs.pythontab.com
使用了global關鍵字後,變量被從新賦值python