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