Python快速入门 | 为什么说 Python 中的变量叫“名称”,赋值叫“贴标签” by 帅彬Posted on2019-08-242022-03-15 在 Python 语言里面,我们如果要声明一个数据,是这样的 name = 对象 比如我们要声明一个整数: a = 1 在编程语言中,我们都习惯把被赋值的玩意就做变量,在 Java 编程语言中,如果我们要声明一个整数就是这样的: int a = 1; 而在 Python 中不需要对变量指定数据类型,这是因为本文隐藏内容 登陆 后才可以浏览
sunshine@sunshine-Lenovo:~$ python Python 2.7.17rc1 (default, Oct 10 2019, 10:26:01) [GCC 9.2.1 20191008] on linux2 Type “help”, “copyright”, “credits” or “license” for more information. >>> a=1 >>> b=1 >>> id(1) 94076597943512 >>> id(a) 94076597943512 >>> id(b) 94076597943512 >>> [2]+ 已停止 python sunshine@sunshine-Lenovo:~$ python3 Python 3.7.5 (default, Nov 20 2019, 09:21:52) [GCC 9.2.1 20191008] on linux Type “help”, “copyright”, “credits” or “license” for more information. >>> a=1 >>> b=1 >>> id(a) 9302176 >>> id(1) 9302176 >>> id(b) 9302176 >>> 大帅,为什么两个版本输出的结果都不相同呢?还有,和你的也有不同,这是什么状况? 登录以回复
是这样的, Python 内部有个优化机制,也就是说整数类型会在 -5 到 256 之间有一个缓存,所以当我们的变量指向这个缓存的时候,得到的引用都是相同的,不会再给我们开辟一个新的空间了,从而提高了 Python 的效率! 登录以回复
我试出来是257开始id会有区别,这个应该与内存的存储单位有关,可是257既不是8位的极限值,又不是16位的极限值,为何呢?
视频好像打不开哦
当a和b的id一样的时候,改变a值,b也会改变,是吗
b 不会改变,你改变 a 就时把 a 这个标签贴到了别的地方,b 还是原来那样的。
在终端和py文件运行的结果不一样,在终端超过一百同样的对象id不同
验证了2.7版本 a b为257时候 确实 不一样
打开~
sunshine@sunshine-Lenovo:~$ python
Python 2.7.17rc1 (default, Oct 10 2019, 10:26:01)
[GCC 9.2.1 20191008] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> a=1
>>> b=1
>>> id(1)
94076597943512
>>> id(a)
94076597943512
>>> id(b)
94076597943512
>>>
[2]+ 已停止 python
sunshine@sunshine-Lenovo:~$ python3
Python 3.7.5 (default, Nov 20 2019, 09:21:52)
[GCC 9.2.1 20191008] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> a=1
>>> b=1
>>> id(a)
9302176
>>> id(1)
9302176
>>> id(b)
9302176
>>>
大帅,为什么两个版本输出的结果都不相同呢?还有,和你的也有不同,这是什么状况?
不是版本的问题,就算你重新进入你刚刚的版本再执行 id(1) 得到的也不一样,这是因为每次都会给对象重新分配空间,生成新的地址。
Python自动将-5~256的整数进行了缓存,当将这些整数赋值给变量时,并不会重新创建对象,而是使用已经创建好的缓存对象。
小的整数共用对象,节约空间
又复习了一遍
打卡
在二的十次方里面的整形数据使用会指向同一个地址 而之外的会自行开辟另外一个空间 貌似是这样子的
打卡
python版本不同共享内存池的大小不同,当超过共享内存池的最大值就会重新分配内存创建对象。list和字典貌似不存在共享内存池,不知道set是不是也不存在
数据池
小数据池
在控制台和pycharm中结果也不一样
在pycharm中地址值是一样的
记得好像是因为用二进制来储存,而Python中是有个默认的位数限制,所以就造成了这两个520 实际上后面的位数是不一样的,所以实际上不是一个数。 随便说说,估计不对…
是这样的, Python 内部有个优化机制,也就是说整数类型会在 -5 到 256 之间有一个缓存,所以当我们的变量指向这个缓存的时候,得到的引用都是相同的,不会再给我们开辟一个新的空间了,从而提高了 Python 的效率!