python中“一切皆对象”是事实,指所有可命名、传递或操作的实体均具备身份(id)、类型(type)和值(value)三要素,且函数、类、模块等均为对象,可变与不可变的区别在于操作是否改变对象内存地址。

Python里说“一切皆对象”,不是修辞,是事实。它意味着你写的每一行代码中能被命名、传递或操作的东西,背后都有一个完整的对象结构:有身份、有类型、有值,还能带属性、响应方法。
对象的三个身份证
每个Python对象都稳稳具备三项基本信息:
-
身份(identity):由
id()返回,是它在内存里的唯一地址。哪怕两个变量值相同,只要不是同一个对象,id()就不同;用is比较的就是这个身份。 -
类型(type):由
type()返回,决定了它能做什么——比如str有.upper(),list有.append()。连int、str这些类型本身,也是type类的实例。 -
值(value):就是你“看到”的内容,比如
42、"hello"、[1, 2]。注意:值相同不等于对象相同,尤其对可变对象更明显。
变量只是贴纸,不是盒子
写a = [1, 2],Python不是把列表“装进”变量a,而是创建一个列表对象,再让名字a指向它。再写b = a,只是给同一个对象又贴了一张标签。所以:
-
a.append(3)后,b也会看到[1, 2, 3]; -
a is b为True,但a == c(其中c = [1, 2])虽为True,a is c却是False。
函数、类、模块,全都是对象
它们不只是“能用”,而是完全符合对象定义:
这本书给出了一份关于python这门优美语言的精要的参考。作者通过一个完整而清晰的入门指引将你带入python的乐园,随后在语法、类型和对象、运算符与表达式、控制流函数与函数编程、类及面向对象编程、模块和包、输入输出、执行环境等多方面给出了详尽的讲解。如果你想加入 python的世界,David M beazley的这本书可不要错过哦。 (封面是最新英文版的,中文版貌似只译到第二版)
立即学习“Python免费学习笔记(深入)”;
-
def f(): pass→f是function类的实例,可以赋值、传参、加属性(如f.desc = "计算函数"); -
class A: pass→A本身是type类的实例,type(A)返回<class></class>; -
import json→json是module类的实例,有__name__、__dict__,也能动态绑定新属性。
可变与不可变,关键看“改值”是否换地址
这不是语法规定,而是对象行为差异:
-
不可变对象(如
int、str、tuple):任何看似“修改”的操作(如s += "x")都会生成新对象,id()必然变化;试图原地改(如s[0] = "X")直接报错。 -
可变对象(如
list、dict、set):调用.append()、.update()等方法,对象自身内容变,但id()不变。
这种统一模型让Python行为高度一致:不用记哪些是“原始类型”、哪些要特殊处理,所有东西都能查类型、设属性、传给函数、甚至当字典键(只要不可变)。









