Python 关键字global全局变量详解

变量作用域
通常在函数体外定义的量成为全局变量,在函数内部定义的变量称为局部变量。
全局变量全部做用域均可用,局部变量只能在本函数可用,变量的使用顺序是,局部变量 > 全局变量, 也就是说:优先使用局部变量
那么问题来了,若是想在函数内使用全局变量,或改变全局变量的值,应该怎么作呢?
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

相关文章
相关标签/搜索