测试环境Python 2.7.3 & python 3.6
小一点int类型相等
s = 1
r = 1 # id(s) == id(r) true
大一点的int类型就不一样了?
s = 1111111111
r = 11111111111 # id(s) != id(r)
所有测试的float类型都不相等
s = 1.1
r = 1.1
id(s) != id(r)
所有测试的tuple类型都不相等
s = (1, 2)
r = (1, 2)
id(s) != id(r)
所有测试的str都相等
s = ‘aaaa’
r = ‘aaaa’
id(s) == id(r)
不是应该都复用相同的不可变对象用以节约内存吗?
回答:
#ifndef NSMALLPOSINTS
#define NSMALLPOSINTS 257
#endif
#ifndef NSMALLNEGINTS
#define NSMALLNEGINTS 5
#endif
#if NSMALLNEGINTS + NSMALLPOSINTS > 0
/* References to small integers are saved in this array so that they
can be shared.
The integers that are saved are those in the range
-NSMALLNEGINTS (inclusive) to NSMALLPOSINTS (not inclusive).
*/
static PyIntObject *small_ints[NSMALLNEGINTS + NSMALLPOSINTS];
#endif
作者:知乎用户
链接:https://www.zhihu.com/question/25050656/answer/34717037
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
int清楚写了[-5, 256] 这些小整数被定义在了这个对象池里.所以当引用小整数时会自动引用整数对象池里的对象的.
string对象也是不可变对象,python有个intern机制,简单说就是维护一个字典,这个字典维护已经创建字符串(key)和它的字符串对象的地址(value),每次创建字符串对象都会和这个字典比较,没有就创建,重复了就用指针进行引用就可以了.
string实现了intern共享?我觉得是一种空间效率和时间效率的妥协。相比于数字,string本身参与的运算要少很多,而且string本身占据的空间也大许多,因此string的主要问题在于不共享带来的空间浪费,所以string实现了很费时间的intern操作。对于数字情况正好相反。作为一个数字,需要做的运算要比string多太多了,而且大小比string也小很多。如果在计算10000+20000之前先花好久查找重复对象,导致一个1ms完成的加法花了100ms,我肯定想砸电脑的。
float类型可以认为每个赋值都是创建一个对象,因为float有点多,所以没必要和int一样了.
tuple它是不可变对象,理应和int和string一样会做一个缓存,但是书上没有说明,于是看了看源码,发现tuple的数据结构很简单,简单到不能再简单,就是一个数组,里面是元组的迭代对象,这个对象指向的是各个元素.最关键的是元组没有实现intern机制!所以元组虽然是不可变对象,但它同时也是一个数组,这个数组和c里的数组一样,每次创建都会分配内存空间。
作者:五秋木
链接:http://www.jianshu.com/p/0f6f0db0ce8f
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1.下载虚拟机我用的是VMware官方下载地址:https://my.vmware.com/en/web/vmware/free#desktop_end_user_computing/vmware_player/7_0%7CPLAYER-714%7Cproduct_downloads进入之后选择 VMware Workstation Player,点击Download Pro2.安装虚拟机下载成功后,一路安装到下一步。这里注意选择空闲空间大的盘(最好不要选C盘)安
idea spring boot (tomcat)设置时区
默认静态资源访问Spring Boot的默认静态资源的路径为:spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/优先级从从高到低。在SpringBoot中可以直接在配置文件中覆盖默认的静...
转自:http://www.lai18.com/content/432194.html驱动程序是使内核能够沟通和操作硬件或协议(规则和标准)的小程序。没有驱动程序,内核不知道如何与硬件沟通或者处理协议(内核实际上先发送指令给BIOS,然后BIOS传给硬件)。 Linux的内核代码在驱动程序文件夹中以源代码的形式包含了许多驱动程序。驱动文件夹中的每个文件...
准备条件2台linux系统的虚拟机作etcd集群节点,其ip地址能够互相ping通(本文使用的镜像为:CentOS-8.2.2004-x86_64-minimal.iso)集群节点分别安装好etcd服务(本文使用的rpm包为:etcd-3.2.21-2.el8.x86_64.rpm)创建集群配置文件的修改etcd集群的创建通过修改配置文件/etc/etcd/etcd.conf实现,修改项主要包括1.ETCD_DATA_DIR ...
1. 开篇在之前介绍的三篇论文,处理的对象都是水平的文本,常见于各类票据卡证等。而在自然场景中,因为图片本身属性的问题,加上拍摄角度的不同,往往会造成图片里文字的扭曲,主要包括弯曲、透视、多方向等问题。为了解决此类问题,本文提出了一类基于矫正器的文字识别方法。代码可以参考:https://github.com/ayumiymk/aster.pytorch2. 论文解读2.1 总览ASTER是2018年提出的论文,论文的全称是《ASTER: An Attentional Scene Text
讲师微信号:osg与qt配置环境的讲解:http://blog.csdn.net/sadasasdasd/article/details/44573637 osg与qt百度贴吧: http://tieba.baidu.com/f?ie=utf-8&kw=osg%E4%B8%8Eqt&fr=search配置环境第一讲试看地址:链接:http://pa...
移植wifi工具之前,大家可以看下http://blog.csdn.net/lidroid/article/details/46723099这篇。这里所谓的wifi的sta工具其实就是对应无线的认证和加密方式,有下面两个工具来实现:1、iw工具:iw工具是iwconfig的替代者,iw可以用于2种“认证和加密”,分别是open(开放系统认证+有效等线加密)、wep方式(共享秘钥认证+有效等
1、以root身份登录主机2、打开ssh服务器服务端的配置文件 vi /etc/ssh/sshd_config3、将PermitRootLogin yes更改为PermitRootLogin no4、如果PermitRootLogin前有注释#,需要取消该配置项前面的注释#5、修改完后,重启sshd服务。命令:service sshd restart...
文章目录基本流程版本记录等问题分支基本原理远程仓库idea集成gitgit工作流gitlab服务器搭建基本流程从本地文件夹新建一个git项目git help 命令 #可以看相关命令的文档工作区(写代码)、暂存区(临时存储)、本地库(历史版本)本地库初始化git init#会在文件夹中生成一个隐藏的.git文件设置签名(为了区分开发人员)#项目级别/仓库级别(会配置到.git/config)git config user.name ***git config user.em
这个属于一个个人喜好问题,我每次看到 df -h 的结果都很郁闷,根目录那一行设备是用uuid表示的,那一串字符真是够长的,看起来非常别扭,所以就自己修改了一下/etc/default/grub文件。 刚开始我东翻西找的,先是修改了/etc/fstab文件,我本以为是这里的问题,结果发现不是。后来我想起来是grub的kernel那一行的"root="参数问题,我又修改了/etc...
SQL基础语法基本查询SQL分类基本查询语法限定查询模糊排序查询模糊查询排序查询多表查询连接查询内连接查询外连接查询常用函数分组统计查询分组统计查询的三个规则基本查询SQL分类数据操纵语言(DML Data Manipulation Language)SELECT(查询)INSERT(插入数据)UPDATE(更新数据)DELETE(删除数据)数据定义语言(DDL Data Def...