Python 中的数据映射是什么规则?
example.1
input:
a = 3
b = a
id(a)
id(b)
id(3)
output:
id(a)=4531258544
id(b)=4531258544
id(3)=4531258544
example.2
input:
a = -1000
b = a
id(a)
id(b)
id(3)
output:
id(a)=4534237776
id(b)=4534237776
id(-1000)=4534237968
为什么?
主要想让大家推荐下,这块知识点应该看什么资料
Python 中的数据映射是什么规则?
关键字 python 小整数对象池
参考: https://github.com/Junnplus/blog/issues/12
Python里的数据映射,简单说就是用一个数据结构(通常是字典)来建立键(Key)和值(Value)之间的对应关系。最核心的规则就是通过键来快速查找、访问或修改其关联的值。
核心规则与操作:
- 键的唯一性:字典中的每个键必须是唯一且不可变的(如字符串、数字、元组)。如果你给一个已存在的键赋值,新值会覆盖旧值。
- 值的任意性:值可以是任何Python对象,并且可以重复。
- 访问:用
dict[key]的语法通过键来获取值。如果键不存在,会引发KeyError。安全的方式是使用dict.get(key, default_value)。 - 添加/修改:直接使用
dict[key] = value。如果键不存在,就是添加新映射;如果键已存在,就是修改其对应的值。 - 删除:使用
del dict[key]或dict.pop(key)来删除一个键值对。
一个典型例子:
# 创建一个映射(字典)
student_scores = {"Alice": 95, "Bob": 87, "Charlie": 92}
# 1. 访问:通过键"Bob"获取值
print(student_scores["Bob"]) # 输出: 87
# 2. 添加:映射里没有"David",这是新增
student_scores["David"] = 88
print(student_scores) # 输出: {'Alice': 95, 'Bob': 87, 'Charlie': 92, 'David': 88}
# 3. 修改:键"Alice"已存在,这是修改其值
student_scores["Alice"] = 98
print(student_scores["Alice"]) # 输出: 98
# 4. 安全访问:使用get方法,避免KeyError
score = student_scores.get("Eve", 0) # 如果"Eve"不存在,返回默认值0
print(score) # 输出: 0
一句话总结:记住字典的键唯一且不可变,用键来高效操作值,这就是Python数据映射的基本玩法。
之前有人在 v 站问过类似的问题,可以先搜索下
谢谢,我主要不知道该用什么关键字搜索,不过 1 楼提供啦
python 会缓存小数字和短字符串。
看 cpython 源码即可
楼主看看流畅的 python 第八章呢,应该就是讲的这个
>>> a = 258
>>> b = a
>>> id(a)
14014704
>>> id(b)
14014704
>>> id(258)
14014816
>>>
我还记得超 256 不行,缓存小数字
缓存的小整数池是-5 到 256 整数,超出这个范围 id 就不会相等,除非 a=257;b=257
牛批,每次这个都记不住
强烈建议看一下 github 上的 wtfpython,长了见识

