python中:x +=1和x = x + 1的区别

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/chenhyc/article/details/102668635

1、注释:
(1)不可变元素的类型有:整数、浮点数、字符串、元组
(2)可变元素的类型有:列表、字典

2、说明:
问题:“=”号的作用是将对象引用与内存中的对象进行绑定,整数既然是“不可变”的,如何改变一个指向整数的变量值呢?
答案:直接在内存中创建一个新的整数值,然后将变量引用与其绑定

3、在可变元素类型中(列表、字典)“x +=1"与"x=x+1"的区别说明:
(3.1)不可变元素的类型,“x +=1"与"x=x+1"作用一样,没有区别
(3.2)可变元素的类型中,“x +=1"与"x=x+1"作用不同,区别如下:
x +=1,表示:修改x自身的值(前提是:x必须是可变对象)
x = x + 1,表示:创建一个新的"同名”对象x,并将x + 1,赋值给新创建的同名变量x(它的含义和y = x + 1相同,只不过这里将y取名为x了),x + 1赋值给新x后,旧x的指向就会被释放

4、程序说明如下:
程序说明1:

print('*************整数,不可变变量***********************')
z = x = 1
x +=2
print('z等于:',z)

print('\n')

z = x = 1
x = x + 2
print('z等于:',z)

print('\n')
print('*************列表,可变变量***********************')
print('\n')

z = x = [1,2]  #初始,x和z都指向[1,2]
x +=[3,4]  #修改x自身的值
print('z等于:',z)  #x和z,指向相同,当x本身被改变的时候,z因为指向相同,也会被改变

print('\n')

z = x = [1,2] #初始,x和z都指向[1,2]
x = x + [3,4] #创建新同名变量:x,并将x+1赋值给x(即新x指向x+1,旧x指向释放)
print('z等于:',z) #因为不是改变x自身,而是创建一个新的变量x,改变新的变量x,旧的x变量不变,因此z不变

在这里插入图片描述

程序说明2:

def myfun(ls = []):
	ls.append('a')
	print(ls)
print('列表append:')
myfun();myfun();myfun()  																																																																																																																																																																																																																										
print('\n')

def sum(ls = []):
	ls =ls + ['a'] #创建新变量ls,ls指向:ls+['a'],同名旧变量ls不改变,还是指向None
	print(ls)
print('列表相加:')  #执行一次sum(),创建并输出一个新ls,同时不会改变旧ls,因此,每次输出都是['a']
sum();sum();sum()
print('\n')

def sum(ls = []):
	ls +=['a']  #ls自身加['a'],因此ls改变了
	print(ls)
print('列表相加:')  #执行一次sum(),ls改变一次,因此会输出:['a']、['a','a']、['a','a','a']
sum();sum();sum()
print('\n')

y=x=[5]
x +=[5]  #对x本身加上[5]
print('x+=是:',x, 'y是:',y)
print('\n')
x = x + [5] #创建一个同名的变量x,并将x+[5]赋值给新x
print('x+[5]是:',x,'y是:',y)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/chenhyc/article/details/102668635
今日推荐