Python全局變量global關鍵字詳解
Python中的變量作用域
一般在函數體外定義的變量成為全局變量,在函數內部定義的變量稱為局部變量。
全局變量所有作用域都可用,局部變量隻能在本函數可用,變量的使用順序是,局部變量 > 全局變量, 也就是說:優先使用局部變量
那麼問題來瞭, 如果想在函數內使用全局變量,或改變全局變量的值, 應該怎麼做呢?
Python全局變量global關鍵字
為瞭解決函數內使用全局變量的問題,python增加瞭global關鍵字, 利用它的特性, 可以指定變量的作用域。
Python全局變量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', 'jb51.net'] def func1(): list.append('www.jb51.net') print(list) func1() print(list)
結果:
[‘global’, ‘jb51.net’, ‘www.jb51.net’]
[‘global’, ‘jb51.net’, ‘www.jb51.net’]
發現上面的list並沒有使用global但是值卻改變瞭, 說明列表是可以在局部被修改的
代碼實例2:
list = ['global', 'jb51.net'] def func1(): list = ['docs.jb51.net'] print(list) func1() print(list)
結果:
[‘docs.jb51.net’]
[‘global’, ‘jb51.net’]
局部變量賦值不能改變全局變量的值
代碼實例3:
list = ['global', 'jb51.net'] def func1(): global list list = 'docs.jb51.net' print(list) func1() print(list)
結果:
docs.jb51.net
docs.jb51.net
使用瞭global關鍵字後, 變量被重新賦值
本文主要講解瞭Python全局變量global關鍵字的使用方法,更多關於Python全局變量的使用請查看下面的相關鏈接
推薦閱讀:
- None Found