********全局变量变量名全部大写
********局部变量变量名全部小写
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']