随笔 - 65  文章 - 0 评论 - 0 阅读 - 28685
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

在其他的编程语言(golang,java,php)中赋值实际上就是开辟了一个新的内存空间,把数据保存到了这个内存空间里面。

python中的=号赋值,实际上这种是一种共享内存的引用赋值。可以这么说,python中根本没有其他语言的赋值这回事,全部都是引用操作。

 

复制代码
# python中的变量在第一次出现时,直接赋值,这个过程就是创建一个内存空间,并把数据保存进去。
num = 3

# 但是,如果该变量赋值过程中,=号右边的不是一个新数据,而是已经在内存中出现过的数据/变量,则这个过程是不会占用新的内存空间的。
num1 = num
print(num, id(num))  #3 4561938800
print(num1, id(num)) #3 4561938800

# 这里重新修改了变量的指向,这里为什么num不跟着一起变化呢?原因是因为小数据池的机制导致的。4已经在内存中了。
# 因此形成的效果在于如果变量的值是一个数值、字符串类型,那么变量改值就会发生变量指向到其他的内存空间,但是不影响引用的变量。
num1 = 4
print(num1) # 4
print(num)  # 3
复制代码

# 但是,针对于一些复杂的数据结构:字典,列表,集合,这几种就有区分了。以以下列表为例:
# data1 = [1,2,3]
# data2 = data1
# data2.append(4)
# print(id(data2), data2)  # 2722959468672 [1, 2, 3, 4]
# print(id(data1), data1)  # 2722959468672 [1, 2, 3, 4]

 

posted on   大明花花  阅读(568)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示