在python中,在函数外面赋值的变量,被称为全局变量。
案例
# 定义两个全局变量
name = "cat"
game = ["LOL"]
# 修改全局变量的数据:全局变量是字符串
def text_str():
'''修改字符串的数据'''
# 修改全局变量的数据
name = "mouse"
print("name:", name)
text_str()
# 查看函数执行后的全局变量
print("name:", name)
结果:
name: mouse
cat
在此案例中可以看到虽然函数中已经对全局变量name进行了修改,但是通过两个输出结果可以发现,在函数内部的输出结果为修改后的结果,而在函数执行完毕后的结果显示,全局变量name的值并没有被修改。
def test_str():
'''修改字符串数据'''
# 如果要修改全局变量的数据:声明可以修改
global name
# 修改全局变量的数据
name= 'mouse'
print("name:", name)
# 查看全局变量的数据
print(name)
test_str()
print(name)
结果:
cat
name: mouse
mouse
在上述代码中我们添加一个global关键字,使得全局变量name的值在函数执行后发生了改变。(global关键字的作用是在函数中对一个全局变量进行声明操作,声明一个全局变量在此函数中是可以进行修改的)
通过上面两个案例得知在普通函数中,可以访问全局变量的数据,但是一般不允许直接修改,可以通过global关键字引入之后进行修改。
# 修改全局变量的数据:变量是一个列表
def test():
'''修改列表中的数据'''
# 修改list数据
game.append("PUBG")
print("全局变量的数据game:", game)
print("函数执行前普通代码中全局变量game:", game)
test()
print("函数执行后普通代码中全局变量game:", game)
结果:
函数执行前普通代码中全局变量game: ["LOL"]
全局变量的数据game: ["LOL", "PUBG"]
函数执行后普通代码中全局变量game: ["LOL", "PUBG"]
在上述代码中可以发现,当全局变量是一个列表是,在函数中可以直接对列表中的内容进行修改。这是因为在此代码中只是对列表里面的值进行了修改,列表还是那个列表,列表的本身并没有被修改。