您的位置:首页 > 编程语言 > Python开发

python中全局变量中“+=”和“+”的区分

2018-03-03 19:10 211 查看

python中全局变量的使用

在引入全局变量的概念之前先说一下python的数据类型,python的数据类型分为两种分别是:数字型和非数字型:
数字型:
1.整型(int,注意:python2中整型分为长整型和整型,但是在Python3中都是整型)
2.布尔类型(bool,只有真假二只,True和False,需要注意的是首字母要大些, True和False为关键字)
3.浮点型(float)
4.复数型(complex)
非数字型:
1.列表(list,空列表的定义方式有两种,list_ = list(),或者list=[ ]),
2.元组(tuple,空元组的定义方式也有两种.t = ()或者t = tuple()还需要注意的一点是如果元组中只有一个元素,元素后需要添加,例如t = (1,))
3.字典(dict,空字典只能使用dict= {}定义,字典有键和值,键是索引,必须是唯一且不可变数据类型,值可以是任何数据类型,键和值之间使用冒号:分隔)
4.字符串(str,需要注意的是字符串用双引号””区分,单引号也可以使用’’)
介绍了python中数据类型的后对这八种数据类型有一个可变以及不可变的区分,列表(list)以及字典(dict)为可变类型,数字型(int,float,complex,bool),字符串(str),元组(tuple)为不可变类型
介绍完python的数据类型就需要引入全局变量以及局部变量的概念了:

局部变量 是在函数内部定义的变量,只能在函数内部使用
在函数执行结束后,函数内部的局部变量,会被系统回收,不同的函数,可以定义相同的名字的局部变量,但是彼此之间不会产生影响。
全局变量 是在函数外部定义 的变量(没有定义在某一个函数内),所有函数内部都可以使用这个变量

--------------------------------------------------------这里是分割线----------------------------------------------------------
在python中“a += 1”相等于“a = a + 1”,列表中也可以使用“+”以及“+=”方法,“+=”是不会改变引用。

在一个函数中对全局变量进行修改的时候,是否需要使用global进行说明,要看是否对全局变量的执行指向进行了修改.
如果修改了执行,即让全局变量指向了一个新的地方,那么必须使用global,如果仅仅是修改了指向的空间中的数据,此时不用必须使用global
但是在执行某些代码的时候我们会出现一些问题,以下是一段代码:



这是这段代码生成的结果:



这是这段代码函数调用位置不同的代码:



这是结果:



根据分析我们可以判断出来在使用"+="方法的时候并不会改变执行的,也就是说并不改变引用,但是此处为什么要使用global我的猜测是python解释器在识别到"="的时候默认其是一个赋值语句,使用两个相同的变量名,因此给等号右边的数据开辟了新的指向空间.在我work2()函数中,若是将"g_num = g_num + [1,2,3]"改为"new_num = g_num + [1,2,3]"就不需要用global进行声明.因为g_num 是一个列表是可变类型数据,我再次猜想是不是因为可变才导致的这个原因,我又使用了整型数据来验证这个猜想,结果与使用列表的无异,验证"+="并不会改变引用.python是高级语言,底层的实现不用过于深究,只要注意在使用全局变量的时候用global声明就好了.
附上:
代码:



结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: