当前位置:首页python > 正文

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • Python 基础:可变类型 与 不可变类型
  • 相关推荐

    最新推荐

    热门点击