全局变量和局部变量


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

posted @ 2018-05-18 16:48  容颜-gl  阅读(287)  评论(0编辑  收藏  举报