全局变量&局部变量

1.全局变量示例

NAME= 'rzq' #全局

def change_name():
    print('change_name',NAME)
change_name()


def change_name():
    name = '帅了一比'
    print('change_name',name)
change_name()
print(NAME)


def change_name():
    global NAME
    name = '帅了一比'
    print('change_name',name)
change_name()
print(NAME)

2.如果函数的内容无global关键字,优先读取局部变量,只能读取全局变量,无法对全局变量重新赋值name='fff',但是对于可变类型,可以对内部元素进行操作。如果函数中有global关键词,变量本质上就是全局变量的那个变量,可读取可赋值

NAME ='产品经理'
def yangjian():
    global NAME# 在局部变量中,如果使用了global关键字,后面如果没有重新修改变量值,那么调用的还是全局变量,如果重新修改了变量那么调用的就是修改后的变量值,
    # 后面的函数调用的也调用的是修改后的全局变量的值
    print('我要搞1',NAME)
    name = '小东北'
    print('我要搞2',name)

######全局变量变量名大写
######局部变量变量名小写
# #如果函数的内容无global关键字,优先读取局部变量,只能读取全局变量,无法对全局变量重新赋值name='fff'
#  但是对于可变类型,可以对内部元素进行操作
# #如果函数中有global关键词,变量本质上就是全局变量的那个变量,可读取可赋值
def qupengfei():
    #name = '基'
    print('我要搞3',NAME)
yangjian()
qupengfei()

3.函数的嵌套

#函数的嵌套
NAME = '海风'
def huangwei():
    name = '黄薇'
    print(name)
    def liuyang():
        name = '刘洋'
        print(name)
        def nulige():
            name = '胡志华'
            print(name)
        print(name)
        nulige()
    liuyang()
    print(name)
huangwei()

 4.加上global的函数嵌套

#加上global的函数嵌套
NAME = '刚娘'
def weihou():
    name = '沉着'
    def weiweihou():
        global NAME
        NAME ='冷静'
    weiweihou()
    print(name)#这个name指的是weihou中定义的name,因为此时‘沉着’中的name还未被修改,只是定义了局部变量
print(NAME)
weihou()
print(NAME)

5.nonlocal 关键字:指定上一级变量

#nonlocal 关键字:指定上一级变量
name ='冷静'
NAME = '刚娘'
def weihou():
    name = '沉着'
    def weiweihou():
        nonlocal name  #nonlocal指定上一级变量
        name ='冷静'
    weiweihou()
    print(name)#这个name指的是weihou中定义的name,因为此时‘沉着’中的name还未被修改,只是定义了局部变量
print(NAME)
weihou()
print(NAME)

猜你喜欢

转载自www.cnblogs.com/renzhiqiang/p/10882762.html