Python 基础:可变类型 与 不可变类型
作者:野牛程序员:2025-12-22 10:43:55python阅读 2005
Python 基础:可变类型 与 不可变类型
# /*
# Python 基础:可变类型 与 不可变类型
# --------------------------------------------------------
# 分类核心:
# 可变类型(Mutable) → 内容可原地修改,内存地址不变
# 不可变类型(Immutable) → 内容不可修改,修改会创建新对象
#
# 在参数传递、字典键使用、对象共享等场景中影响显著。
# */
# --------------------------------------------------------
# 不可变类型(Immutable Types)
# 修改会创建新对象
immutable_examples = [
int, # 整数
float, # 浮点数
bool, # 布尔
str, # 字符串
tuple, # 元组
frozenset, # 冻结集合
bytes # 字节串
]
print("不可变类型:")
for t in immutable_examples:
print(" -", t.__name__)
# 示例:整数修改 → 产生新对象
x = 10
print("\n整数示例:修改前 id =", id(x))
x += 1
print("整数示例:修改后 id =", id(x))
# --------------------------------------------------------
# 可变类型(Mutable Types)
# 内容可原地修改,内存地址不变
mutable_examples = [
list, # 列表
dict, # 字典
set, # 集合
bytearray # 可变字节数组
]
print("\n可变类型:")
for t in mutable_examples:
print(" -", t.__name__)
# 示例:列表修改 → 地址保持不变
l = [1, 2, 3]
print("\n列表示例:修改前 id =", id(l))
l.append(4)
print("列表示例:修改后 id =", id(l))
# --------------------------------------------------------
# 要点总结:
# 1) 不可变:int、float、bool、str、tuple、frozenset、bytes
# 2) 可变:list、dict、set、bytearray
# 3) 可变对象可原地修改;不可变对象修改会产生新对象;
# 4) 不可变对象适合作为字典键;可变对象不允许作为键;
# 5) 在函数传参中,可变对象可能导致外部值被修改。
# */
#
# 不可变类型:
# - int
# - float
# - bool
# - str
# - tuple
# - frozenset
# - bytes
#
# 整数示例:修改前 id = 140721744595672
# 整数示例:修改后 id = 140721744595704
#
# 可变类型:
# - list
# - dict
# - set
# - bytearray
#
# 列表示例:修改前 id = 1829704100096
# 列表示例:修改后 id = 1829704100096野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

