局部变量与全局变量

2018/05/04 18:11
阅读数 10

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

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.事例,看竖排排版排序,当出现函数名加括号[huangwei()]这种情况时才需要进入到指定函数的过程,依次往下进行。

特别注意:print()需要计算之后往外跳得值!print()的时候先从自身找!

name = "刚娘"

def weihou():
    name = "陈卓"              #最后取得的值就是三个print的结果
    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)
# 刚娘
# 冷静
# 刚娘

 

展开阅读全文
def
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部