局部变量与全局变量

全局变量:顶头写,没有空格,任何时候都能调用

name='lhf'

局部变量:子程序中的变量,比如一个函数里x=1,如果同时有全局变量x=1跟局部变量x=1,那么就执行局部变量,如果没有局部变量就执行全局变量(家里没有再去外面找,一层一层的找,知道找到最外边一层)

 name='“lfe”

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

但是局部变量只在函数里面生效

name = "adf"
def change_name():
    global name   #如果这在加入global name(就是全局变量,就是name=“adf”)
    name='帅了一比'
    print('change_name',name)
print(name)
'帅了一比'        # 因为name='帅了一比'是在global后面赋值的,所以把全局变量改了

错误事例:name局部变量之后再拿全局变量,会导致找不到该使用的name值,因为优先使用局部变量就该用name = "自己",但是根据自上而下的规则又要使用global NAME,这样就会产生矛盾从而报错。

解决措施:因此全局变量尽量大写,局部变量尽量都小写,比较好区分。

 NAME = ["产品经理","廖波湿"]
 def qupengfei():
     name = "自己"
     global NAME
     print('我要搞', NAME)
 qupengfei()

嵌套函数注意使用的顺序,例2

NAME = '海风'

def huangwei():
    name = "黄伟"
    print(name)
    def liuyang():
        name = "刘洋"
        print(name)
        def nulige():
            name = '沪指花'
            print(name)
        print(name)
        nulige()
    liuyang()
    print(name)

5.事例,看竖排排版

name = "刚娘"

def weihou():
    name = "陈卓"
    def weiweihou():
        global name   
        name = "冷静"

    weiweihou()
    print(name)

print(name)
weihou()
print(name)
# 刚娘
# 陈卓
# 冷静

6.新概念,nonlocal(上一级的变量)

name = "刚娘"

def weihou():
    name = "陈卓"
    def weiweihou():
        gnonelocal name   # nonlocal,指定上一级变量,如果没有就继续往上直到找到为止
        name = "冷静"

    weiweihou()
    print(name)

print(name)
weihou()
print(name)
# 刚娘
# 冷静
# 刚娘 ***

猜你喜欢

转载自www.cnblogs.com/newt/p/8991946.html