姓名:刘浩然。 2020年大目标Python

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)

结果:
刚娘
陈卓
冷静

 

posted @ 2019-02-13 22:04  pluto2charon  阅读(91)  评论(0编辑  收藏  举报