Python中的xxx+=xxx和xxx=xxx+xxx一些区别及执行过程

本文深入探讨了Python中变量的内存管理机制,解释了变量赋值与引用的区别,通过示例代码展示了+=运算符与简单加法赋值的不同之处,并讨论了值类型与引用类型的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

预知小知识:
Python中的变量与其他语言稍有差异,如a = 10并不是直接在内存中创建一个变量a其值为10,而是在内存中创建一个a这个a指向这个10,在Python中所有牵扯到等号的均不是值赋值,全都是引用(C的小伙伴可以大致理解为处处是指针)。

示例代码:

>>> a = 10
>>> b = 10
>>> id(a)
1686269232
>>> id(b)
1686269232

以上可以看到变量只要赋值一致,他们在本机中的内存地址都一样。

+=示例代码:

# coding:utf-8
num = [88]


def demo(nums):
    nums += nums  # 将nums指向的这个地址中的[88]和[88]进行合并
    print(nums)  # 两个列表合并将会得到[88, 88]


demo(num)
print(num)  # 因为是引用类型num所指向的值已发生改变这里也会得到[88, 88]

pycharm中执行结果:
	[88, 88]
	[88, 88]
# coding:utf-8
num = [88]


def demo(nums):
    nums = nums + nums  # 将nums所指向的[88]和[88]合并让demo中的零时变量nums重新指向[88, 88]
    print(nums)  # 这里会输出新的指向结果[88, 88]


demo(num)
print(num)  # demo中的nums为零时指向所以不会影响num的值

pycharm中执行结果:
	[88, 88]
	[88]

总结:
虽然我们常使用xxx+=xxx或xxx=xxx+xxx得到的结果基本是一致的,但是底层执行还是有一些差异的,所以xxx+=xxx不完全等价于xxx=xxx+xxx。

小知识:

python的值类型和引用类型

值类型:

包含:字符串、元组、数值,本身不允许被修改

引用类型:

包含:列表、字典,本身允许修改(不能作用于字典的key,因为会进行一个hash过程可变参数类型是不行的)

转载于:https://www.cnblogs.com/weibgg/p/10786958.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值