吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1323|回复: 9
收起左侧

[讨论] python 变量没有自己独有的内存地址吗?

[复制链接]
头像被屏蔽
jinzhu160 发表于 2022-5-8 09:14
提示: 作者被禁止或删除 内容自动屏蔽

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

奈陌 发表于 2022-5-8 11:17
对于Python中的复杂数据类型(如:列表、元组、字典等),如果仅仅是对其中的⼀个或多个元素进⾏修改,并不会改变其地址
Harold123 发表于 2022-5-8 11:42
楼上说的有点问题,可变类型对象有列表和字典,
元组、数字、字符串属于不可变类型对象。
举个例子,列表 list_1 = [1, 2, 3] 如果你用 list_1.append(4) 你会发现前后的 id(list_1)是没有发生变化的。但是如果你使用 list_1 = [1, 2, 3, 4],这时的 id 就发生了变化。
而对于你说的占用资源,python的垃圾回收机制会自动回收无法再被引用的值。比如你定义 a = 1 , 然后又重新定义 a = 2 , 此时 1 的值所在的内存就会被自动回收。
头像被屏蔽
 楼主| jinzhu160 发表于 2022-5-8 11:44
JuncoJet 发表于 2022-5-8 12:17
Python的hash代表的就是地址,所有的数据都是建立在hash表上的,通过索引hash值得到具体数据的地址
很有意思的一个例子 a=1 b=2-1
ab的hash是相同的
Harold123 发表于 2022-5-8 12:25
jinzhu160 发表于 2022-5-8 11:44
好的,好像明白了,python 中一切数据类型都是对象,比如 int a =1 ,这个 1 也是对象,其他语言这都是值 ...

对的,python里面一切皆对象,数字、列表、字典、函数这些都是对象,变量就相当于对这些对象的引用,python变量实现方式就是引用语义,而其他语言使用值语义来实现。
C语言中定义很多个int类型变量的值都为1的话,就要同时占用很多的1的内存,但是python里面定义很多个变量值为1的话,相当于很多个变量都指向了同一个内存,当存储1的对象引用计数器变为0的时候,不会再被引用,就会自动清理掉了
头像被屏蔽
 楼主| jinzhu160 发表于 2022-5-8 12:48
提示: 作者被禁止或删除 内容自动屏蔽
wuai_leeda 发表于 2022-5-8 17:54
Python是面向对象语言,万物皆对象
XiaoZouYu 发表于 2022-5-8 18:33
python中的赋值就是一个面向对象,每打印一次地址都会变化  只有-5到256之间整数的地址是固定
三滑稽甲苯 发表于 2022-5-8 19:14
Python有小整数池的,你试试看114514这个数,结果应该就不一样了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表