Python--局部变量与全局变量
2016-12-25 00:07 ZN23&24 阅读(147) 评论(0) 收藏 举报局部变量与全局变量
1.什么是全局变量
在globals中的变量,都是全局变量,全局变量的作用域就是整个程序
2.什么是局部变量
顾名思义就是只能在局部可以执行的变量,在子程序中定义的变量就称为局部变量,局部变量的作用域是定义该变量的子程序。
3.当全局变量与局部变量同名时:
在定义局部变量的子程序中,局部变量生效,在其他地方全局变量生效。
4.定义全局变量和局部变量的命名规法
1、全局变量变量名必须大写
2、局部变量变量名必须小写
3、全局变量必须写在局部变量的上面,并且顶格写。
ps1:
1 name= 'lhf'
2
3 def change_name():
4 print('我的名字',name)
5
6 change_name()
执行结果:
1 我的名字 lhf
ps2:
1 name= 'lhf'
2 def change_name():
3 name='帅了一笔'
4 print('我的名字',name) #局部变量直接从里层开始读
5
6 change_name()
7 print(name)
执行结果:
1 我的名字 帅了一笔 2 lhf
ps3:
1 name= 'lhf'
2 def change_name():
3 global name #global全局变量,从最外层开始读,再读里层
4 name='帅了一笔'
5 print('我的名字',name)
6
7 change_name()
8 print(name)
执行结果:
1 我的名字 帅了一笔 2 帅了一笔
ps4:
1 NAME = "杠娘"
2
3 def yangjian():
4 # NAME = "史正文"
5 global NAME
6 NAME = "小东北"
7 print('我要搞', NAME)
8
9 def qupengfei():
10 # NAME = "基"
11 print('我要搞', NAME)
12
13 yangjian()
14 qupengfei()
执行结果:
1 我要搞 小东北 2 我要搞 小东北
ps5: global声明全局变量,就从最上面开始往下一层一层读取
1 NAME = "产品经理"
2
3 def yangjian():
4 # NAME = "史正文"
5 global NAME # 已经声明,NAME就是全局的的那个变量
6 print('我要搞', NAME)
7 NAME = "小东北" # 修改 全局的变量
8 print('我要搞', NAME)
9
10 def qupengfei():
11 NAME = "基"
12 print('我要搞', NAME)
执行结果:
1 刚娘 2 冷静 3 刚娘
ps6: nolocal 指定上一级变量,如果没有就继续往上,一直找到为止。
1 name = "刚娘" 2 3 def weihou(): 4 name = "陈卓" 5 def weiweihou(): 6 nonlocal name # nonlocal,指定上一级变量,如果没有就继续往上一直到找到为止 7 name = "冷静" 8 weiweihou() 9 print(name) 10 print(name) 11 12 weihou() 13 print(name)
执行结果:
1 刚娘 2 冷静 3 刚娘
全局变量和局部变量有无global关键字的区别
一、 如果函数的内容无global关键字
1、有声明局部变量
1 NAME = ["产品经理","廖波诗"]
2 def qupengfei():
3 NAME = "自己"
4 print('我要搞',NAME)
5 qupengfei()
执行结果:
1 我要搞 自己
2、无声明局部变量
1 NAME = ["产品经理","廖波诗"]
2 def qupengfei():
3 NAME.append('XXOO')
4 print('我要搞',NAME)
5 qupengfei()
执行结果:
1 我要搞 ['产品经理', '廖波诗', 'XXOO']
二、如果函数的内容有global关键字
1、有声明局部变量
1 NAME = ["产品经理","廖波诗"]
2 def qupengfei():
3 NAME = "自己"
4 print('我要搞',NAME)
5 qupengfei()
执行结果:
1 我要搞 自己
2、无声明局部变量
1 NAME = ["产品经理","廖波诗"]
2 def qupengfei():
3 global NAME
4 NAME = ["阿毛"]
5 NAME.append('XXOO')
6 print('我要搞',NAME)
7 qupengfei()
执行结果:
1 我要搞 ['阿毛', 'XXOO']
全局变量和局部变量的总结:
1、优先读取局部变量,能读取全局变量,无法对全局变量重新赋值 NAME=“fff”,
2、但是对于可变类型,可以对内部元素进行操作
3、如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值 NAME=“fff”
ps1:
1 NAME = ["产品经理","廖波湿"]
2
3 def yangjian():
4 # NAME = "史正文"
5 global NAME # 已经声明,NAME就是全局的的那个变量
6 print('我要搞', NAME)
7 NAME = "小东北" # 修改 全局的变量
8 print('我要搞', NAME)
9
10 def qupengfei():
11 # NAME = "aS"
12 NAME.append('天扎龙')
13 print('我要搞', NAME)
14
15 qupengfei()
执行结果:
1 我要搞 小东北 2 我要搞 小东北 3 我要搞 ['产品经理', '廖波湿', '天扎龙']

浙公网安备 33010602011771号