zoukankan      html  css  js  c++  java
  • day15 Python全局变量和局部变量

    在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。

    全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
    当全局变量与局部变量同名时:
    在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
    name='charon'
    
    def change_name():
        print('我的名字',name)
    
    change_name()
    
    
    def change_name():
        name='pluto'
        print('我的名字',name)
    
    change_name()
    print(name)
    
    
    
    def change_name():
        global name
        name='pluto'
        print('我的名字',name)
    
    change_name()
    print(name)
    
    
    结果:
    我的名字 charon
    我的名字 pluto
    charon
    我的名字 pluto
    pluto
    

    能够把变量私有化的只能是函数

    global关键字

    name='charon'
    
    
    def change_name():
        global name#将最外层的name='charon'拿过来了,声明name就是那个全局变量
        name='pluto'#声明了修改上面拿过来的全局变量
        print('我的名字',name)
    
    def change01_name():
        print("我的名字",name)
    
    change_name()
    change01_name()
    
    结果:
    我的名字 pluto
    我的名字 pluto
    
    
    
    name='charon'
    
    
    
    
    
    def change_name():
     #   global name
     #   name='pluto'
        print('我的名字',name)
    
    def change01_name():
        print("我的名字",name)
    
    change_name()
    change01_name()
    
    
    结果:
    我的名字 charon
    我的名字 charon
    
    
    
    name='charon'
    
    
    
    
    
    def change_name():
        global name
        name='pluto'
        print('我的名字',name)
    
    def change01_name():
        print("我的名字",name)
    change01_name()
    change_name()
    
    结果:
    我的名字 charon
    我的名字 pluto
    

     规范:局部变量全小写,局部变量全大写 x

    # 如果函数中有global关键字,变量本质上就是全局的那个变量

    name = "刚娘"
    
    def weihou():
        name = "陈卓"
        def weiweihou():
            nonlocal name   # nonlocal,指定上一级变量,如果没有就继续往上直到找到为止
            name = "冷静"
    
        weiweihou()
        print(name)
    
    print(name)
    weihou()
    print(name)
     
    结果:
    刚娘 冷静 刚娘
    name = "刚娘"
    
    def weihou():
        name = "陈卓"
        def weiweihou():
            global name   #指定全局变量,name= "刚娘"
            name = "冷静"
        weiweihou()
        print(name)#weiweihou内改变的name变量是全局的,没有改陈卓那个变量,所以weihou调用的仍然是name = "陈卓"
    
    print(name)
    weihou()
    print(name)
    
    结果:
    刚娘
    陈卓
    冷静
    
  • 相关阅读:
    [NOIP2013]华容道
    [随笔]冲NOIP一等奖。。
    [NOIP2015]联合权值
    [随笔]我回来啦!
    [考试]20151105
    [知识点]最近公共祖先LCA
    [BZOJ3751/NOIP2014]解方程
    [旧版][知识点]字符串Hash
    NOIP2016题解
    NOIP2016游记
  • 原文地址:https://www.cnblogs.com/charon2/p/10372064.html
Copyright © 2011-2022 走看看