全局变量和局部变量
********全局变量变量名全部大写
********局部变量变量名全部小写
1 #有声明局部变量(无global)
2 NAME='hhh'
3 def change_name():
4 name='ccc'
5 print('change_name',name)
6 change_name()
7 print(NAME)
8
9
10 运行结果:change_name ccc
11 hhh
12
13 #无声明局部变量
14 NAME='hhh'
15 def change_name():
16 print('change_name',NAME)
17 change_name()
18 print(NAME)
19 运行结果:change_name hhh
20 hhh
1 NAME='hhh'
2 def change_name():
3 print(name)
4 name=2
5 change_name()
6 print(name)
运行结果:error 因为print(name)中需要调用局部变量 但局部变量在此时并没有被创建
1 NAME=['ah','bh']
2 def xxchange():
3 name='xxxx'#创建局部变量
4 global NAME#声明全局变量
5 print(name)
6 xxchange()
运行结果:error 创建局部变量时应该在函数内部使用局部变量 但是声明global时 又应该使用全局变量 所以报错
#有global
1 NAME='hhh'
2 def change_name():
3 global NAME #这里的name为全局变量
4 NAME='ccc'#修改全局变量为ccc
5 print(NAME)
6 change_name()
7 print(NAME)
运行结果:ccc
ccc
注:如果函数的内容中无global关键字,优先读取局部变量并且能读取全局变量 无法给全局变量重新赋值 name=‘hhh’
但是对于可变类型(不可变类型:数字 字符串 元组;列表、字典可变),可以对内部元素进行操作
如果函数中有global关键字,此变量本质上就是全局变量,可读取可修改。
1 NAME=['ahah','bhbh']
2 def xxname():
3 NAME.append('python')
4 print('一二三四',NAME)
5 xxname()
运行结果:一二三四 ['ahah','bhbh','python']