很多Python初学者以为学会了a = 10
就掌握了变量,直到他们遇到这样的代码:
def magic(lst=[]):
lst.append("🔮")
return lst
print(magic()) # ["🔮"]
print(magic()) # ["🔮", "🔮"]
这个看似简单的函数,暴露了Python最核心的秘密——对象与变量的微妙关系。今天我们不谈基础语法,带你直击Python最易被误解的三个真相。
一、变量不是盒子,而是便利贴
传统编程教学中,总把变量比作"存储数据的盒子"。但在Python中,这个比喻是彻头彻尾的谎言。
a = [1,2]
b = a
a.append(3)
print(b) # [1,2,3]
真正的Python变量工作机制:
-
每个对象(如列表)独立存在于内存中
-
变量只是贴在对象上的便利贴
-
赋值
=
不是复制对象,而是贴新标签
当我们执行a = b
时,不是把b盒子里的东西倒给a,而是给b指向的物体再贴一个叫a的便利贴。
二、可变对象是定时炸弹