python 变量之小整数池跟大整数池
在python中定义变量会有:id,type,value。对于==比较的是value,对于is比较的是id。
因此,对于相同value的变量,它的type相同,但是它的id值可能不一样。对于相同id的变量,它的type和value值肯定是一样。
例如:

但是,有的时候对于相同的值,如果创建两次,会发现它的id值也是一样的。
例如:

这是因为在交互式模式下
1、Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置,所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。
2、intern机制处理空格一个单词的复用机会大,所以创建一次,有空格创建多次,但是字符串长度大于20,就不是创建一次了。
那么在pycharm中如何呢?
x = "Info Walle: 18"*100
y = "Info Walle: 18"*100 print(x == y) #True
print(x is y) #True
print(id(x), id(y))
我们会发现即使加上空格,x跟y的id还是相同的。
这是因为在pycharm中,
每次运行是所有代码都加载都内存中,属于一个整体,所以这个时候会有一个大整数对象池,即处于一个代码块的大整数是同一个对象。我们只需要记住这是一种优化机制,至于范围到底多大,无需细究。
python 变量之小整数池跟大整数池的更多相关文章
- Python中小整数对象池和大整数对象池
1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提 ...
- Code Kata:大整数比较大小&大整数四则运算---加减法 javascript实现
大整数的四则运算已经是老生常谈的问题了.很多的库也已经包含了各种各样的解决方案. 作为练习,我们从最简单的加减法开始. 加减法的核心思路是用倒序数组来模拟一个大数,然后将两个大数的利用竖式进行运算. ...
- Python 源码剖析(二)【整数对象】
二.整数对象 1.PyIntObject 2.PyIntObject 对象的创建和维护 3.Hack PyIntObject 1.PyIntObject PyIntObject的定义: [intobj ...
- [大整数乘法] java代码实现
上一篇写的“[大整数乘法]分治算法的时间复杂度研究”,这一篇是基于上一篇思想的代码实现,以下是该文章的连接: http://www.cnblogs.com/McQueen1987/p/3348426. ...
- JavaScript实现大整数减法
继上一篇博文写了大整数加法之后,我又模拟上篇博文的算法,自己实现了大整数减法. 大整数减法相对于加法来说,稍微复杂一点.由于要考虑一些情况: 1. 两个数相减,可能会出现结果为正.负和0三种情况: 2 ...
- Java的Integer常量池和String常量池
1.Integer的常量池 看下面一段代码: package cn.qlq.test; public class ArrayTest { public static void main(String[ ...
- python基础之小数据池、代码块、编码和字节之间换算
一.代码块.if True: print(333) print(666) while 1: a = 1 b = 2 print(a+b) for i in '12324354': print(i) 虽 ...
- python 浅谈小数据池和编码
⼀. ⼩数据池 在说⼩数据池之前. 我们先看⼀个概念. 什么是代码块: 根据提示我们从官⽅⽂档找到了这样的说法: A Python program is constructed from code b ...
- python中的 小数据池 is 和 ==
1. 小数据池 一种数据缓存机制,也被称为驻留机制 小数据池针对的是:整数 , 字符 , 布尔值 .其他的数据类型不存在驻留机制 在python中对 -5 到256之间的整数会被驻留在内存中, 将一定 ...
随机推荐
- python各种转义字符
- unix socket服务器
只能处理单个消息,一发一收. int loop(void) { struct sockaddr_un client_addr; int server_socket, client_socket; ...
- webviewplugin
https://blog.csdn.net/qq_39197547/article/details/85007418 https://www.cnblogs.com/pjl43/p/9866753.h ...
- CentOS 离线安装 MYSQL+APACHE+PHP
一.MYSQL安装 下载MYSQL安装包:MySQL-client-XXX.rpm MySQL-server-XXX.rpm MySQL-devel-XXX.rpm 如有冲突,要先删除原来的M ...
- 页面适配的小栗子 - github
我模拟了一个QQ音乐的radiostation页面,用了媒体查询以及流式布局,页面大部分内容是js根据json生成的,使用了less来编写css样式表. 下面是仓库地址,感兴趣的小伙伴可以打开看看,将 ...
- 洲阁筛 & min_25筛学习笔记
洲阁筛 给定一个积性函数$F(n)$,求$\sum_{i = 1}^{n}F(n)$.并且$F(n)$满足在素数和素数次幂的时候易于计算. 显然有: $\sum_{i = 1}^{n} F(n) = ...
- Mapped Statements collection already contains value for ***.***的问题
情景,在我们配置项目或者开发的过程中,可能由于项目工程量大或误操作等原因,造成Map映射文件的ID重复,造成项目启动报以下错误, org.springframework.beans.factory.B ...
- cookie的认识
cookie 概念和术语cookie,字面意思是“饼干”,源自魔术cookie(魔术cookie),这种技术已经在80年代的UNIX环境中已知并且通常用于在服务器上实现客户端的识别机制,例如例如X W ...
- GitLab本地、远程更新已经fork的项目
单用IDEA无法做到,必须配合使用Git命令行才能做到,而且是先从原作者项目更新本地库,再从本地库push到自己远程fork项目,非常坑逼. 1.到项目clone的根目录右键Git Bash,先查看远 ...
- 【HNOI 2018】毒瘤
Problem Description 从前有一名毒瘤. 毒瘤最近发现了量产毒瘤题的奥秘.考虑如下类型的数据结构题:给出一个数组,要求支持若干种奇奇怪怪的修改操作(例如给一个区间内的数同时加上 \(c ...