name=‘lhf‘ #顶头写的没有缩进,在整个py文件中都生效
def fox():
name="sb"
print("shuaige",name) #这里面的name是fox()函数里面的,是一个局部变量
fox() #这里面输出的name是“sb”
print(name) #这里面输出的name是全局变量 “lhf”
如果想在函数里面就把全局变量给改了,可以试试以下这种方法
name=‘lhf‘ #顶头写的没有缩进,在整个py中都生效
def fox():
global name
name="sb"
print("shuaige",name) #这里面的name是fox()函数里面的,是一个局部变量
fox() #这里面输出的name是“sb”
print(name) #这样输出结果就是“sb”了,因为global name 就是对全局变量进行更改
小猪佩奇的补充:函数的内部无global,优先读取局部变量,若没有,则读取的是全局变量,
若有global,则对全局变量进行修改
name="sb"
def a():
global name #对全局变量做出了更改
name="2b"
print("i fcuk ",name)
def b():
name="haha"
print("i want to fuck ",name) #虽然全局变量已经发生了改变,但是调用b函数时,用的是自己的局部变量
a()
b()
print(name) #这时候全局变量已经发生了改变,变成了2b
!!!全局变量全部大写,局部变量全都是小写!!!
练习:
def weihou():
name="chenzhuo"
def weiweihou():
global name #在深一层加入global,不影响调用的时候优先选取内部自己的局部变量
name="lengjing"
weiweihou()
print(name)
print(name)
weihou()
print(name)
#输出结果: gangniang
chenzhuo
lengjing
拓展练习
def weihou(): name="chenzhuo" def weiweihou(): nonlocal name #!!!这里nonlocal指的是修改上一级的变量 ,而不用对全局变量进行修改 name="lengjing" weiweihou() print(name) print(name) weihou() print(name) #输出结果: gangniang # lengjing # gangniang
原文:https://www.cnblogs.com/yxzymz/p/12727607.html