全局变量:顶头写,没有空格,任何时候都能调用
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)
# 刚娘
# 冷静
# 刚娘