python中的变量和引用

变量和引用

python中变量没有类型,只有对象才有类型,a=3 我们说a是一个int其实正确的说法是 a引用了一个int类型的对象值是3
如果都这么说 尼玛好累啊,所以在平时我们以为变量是有类型的,内存里面的数据我们要访问,我们肯定要解决咋么拿,总要有个地方代表我要拿什么,有东西来代表内存里面的数据,就好比我们windows系统里面的快捷方式,我们在桌面一个快捷方式指向了一个具体的文件夹,一个执行文件,一个网址等等可以把变量理解为一个标识,一个快捷方式,如下面草图:

一探究竟

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import sys
a = 9 # a引用了9这个对象
sys.getrefcount(a) # 打印a引用的对象的引用计数
18 # 输出18次
b =a # b 引用了a引用的对象
id(a) # 打印a和b引用对象的内存地址是相同的
140318064267944
id(b)
140318064267944
sys.getrefcount(a) # 再次打印a引用的对象计数
19 # 输出19次,因为b也引用了一次

#下面我们让a引用其他的对象
a = 10
sys.getrefcount(a) # 打印a引用的对象的引用计数
28 # 输出的不是9这个对象的引用而是10这个对象的引用计数
sys.getrefcount(b) # 打印b引用的对象的引用计数
18 # 输出的是9这个对象的引用,由于a不再引用了9这个对象,所以引用计数就-1

当一个对象在内存里面的引用计数为0,也就是说没有变量引用对象了,这个对象就会被销毁,内存就回收了这部分空间

文章目录
  1. 1. 变量和引用
  2. 2. 一探究竟