python 的 一切都是对象
python 是 高度面向对象特性,所以实际上Python里面的任何元素都是一种对象。考虑一下如下代码:
>>> print(300)
300
这个代码会做三件事情
1,生成一个int对象
2,把300的值赋给int对象
3,在console里面打印300
可以从如下代码里面看出300为int的实例
>>> type(300)
<class 'int'>
python的变量是一个符号,是实例的引用
比如
>>> n = 300
这个语句会创造一个300的int实例,并且让变量n指向到这个实例

验证一下想法
>>> id(300)
140261438010384
>>> n=300
>>> id(n)
140261438010384
>>> type(n)
<class 'int'>
>>> print(n)
300
注释:id() 函数用于获取对象的内存地址。
变量赋值给变量,也是传引用
>>> id(n)
140261438010384
>>> id(m)
140261438010384

如果重新给m赋值,那么m会把自己的指针指向新实例
>>> m=400
>>> id(m)
140261438010352
>>> id(n)
140261438010384

如果n再重新赋值,那么会没有变量指向实例300
>>> n='foo'
>>> id(n)
140261438037944
>>> id(m)
140261438010352

网友评论