首页 > 其他 > 详细

函数二:局部变量与全局变量

时间:2020-04-19 00:41:38      阅读:47      评论:0      收藏:0      [点我收藏+]

局部变量与全局变量

1.全局变量:在全局中都生效的变量

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!