python false 0_python float(0) is 0.0 为什么是 False?
test.py
print id(float(0))
print id(0.0)执行结果:
140494852143304
140494852143328
再来点例子:
>>> 10000 is 10000
True
>>> a = 10000
>>> b = 10000
>>> a is b
False
>>> a = 1
>>> b = 1
>>> a is b
True
我解释我上面这个例子好了:
第一个,两个10000 PyIntObject都会在编译的时候就生成,而且因为他们被编译为了一个PyCodeObject所以两个10000是一样滴
第二个,当你在交互式解释器这么输入,a和b 所指向的10000会被存入两个不同的PyCodeObject,所以是不同的
第三个,两个1,存入了不同的PyCodeObject,可是CPython有小整数Cache, 所以不管生成几次1,都是一样滴
这些不同取决于交互式解释器的处理方式,所以测试这类内容,不要用交互式解释器,它里面做了一些不同滴事情。
下面我们来解释问者的问题
>>> float(0) is 0.0 # 毫无疑问,False,后面的0.0位于PyCodeObject中
然后就是对一个误解的解答,
>>> id(0.1)
140307349977328
>>> id(0.2)
140307349977328
这俩哥们ID也一样,咋回事呢,看来大家还有兴趣,这就涉及到CPython的优化了,需要深入源码,对于浮点数,Python的设计者们预留了一块内存空间,因为频繁malloc的开销比较大,在源码里面是一个叫free_list的链表,生成0.1的时候把表头拿出来用,然后0.1被dealloc后,它的内存会被回收重新加入表头,0.2来了,之后的结果大家都懂的。
贴一段源码
static void
float_dealloc(PyFloatObject *op)
{
if (PyFloat_CheckExact(op)) {
op->ob_type = (struct _typeobject *)free_list;
free_list = op;
}
else
op->ob_type->tp_free((PyObject *)op);
}
python false 0_python float(0) is 0.0 为什么是 False?相关推荐
- python axis 0_Python之NumPy(axis=0/1/2...)的透彻理解
https://blog.csdn.net/sky_kkk/article/details/79725646 numpy中axis取值的说明 首先对numpy中axis取值进行说明:一维数组时axis ...
- python中0、1、True、False、if条件
总结: 无论是python还是C++,true=1,false=0 非零就是true,此说法只应用在判断条件中 1.python中0.1.True.False >>> print(T ...
- python spark2.0_Python+Spark2.0+hadoop学习笔记——Python Spark MLlib决策树二分类
决策树是在数据分类问题中的一种常用且经典的机器学习方法,在本例里使用决策树模型来分析StumbleUpon数据集,来预测网页是暂时的(ephemeral)还是长青的(evergreen),并且调教参数 ...
- python numpy ufunc.reduce(self, a, axis=0, dtype=None, out=None, keepdims=False)函数.(连续执行原始运算对值聚合)
def reduce(self, a, axis=0, dtype=None, out=None, keepdims=False): # real signature unknown; restore ...
- 从0.1加0.2不等于0.3谈Python浮点数的前世今生
文章目录 1. 0.1加0.2不等于0.3? 2. 为什么要使用浮点数? 3. 浮点数的二进制和十进制是怎样转换的? 4. 如何实现0.1加0.2等于0.3? 1. 0.1加0.2不等于0.3? 什么 ...
- python opencv调用cuda_Win10使用VS2019从源码编译OpenCV 4.4 + CUDA 11.0 + Cudnn 8.0 + python3
本文主要介绍Win10使用VS2019从源码编译OpenCV 4.4,并使用opencv_contrib支持CUDA 11.0 + Cudnn 8.0,以及对python3的支持. 1 首先准备安装环 ...
- python参考手册 豆瓣_详解python 模拟豆瓣登录(豆瓣6.0)
最近在学习python爬虫,看到网上有很多关于模拟豆瓣登录的例子,随意找了一个试了下,发现不能运行,对比了一下代码和豆瓣网站,发现原来是豆瓣网站做了修改,增加了反爬措施. 首先看下要模拟登录的网站: ...
- python中24≤2825是否合法_在下列Python语句中非法的是() (2.0分)_学小易找答案
[其它]统计一个文件中的字符数.单词数(单词由空格分隔)和行数,并将某个指定的字符串从该文件中所有出现的地方删除.程序应提示用户输入指定的文件名和要删除的字符串. [单选题]在下列Python语句中非 ...
- python自动化------问卷星刷问卷3.0版本
接上,之前做的问卷星刷问卷的功能单一,每个题目只能选一个选项.现在的3.0版本功能增加了计数器(刷了几份问卷).多选项的选择.通过滑块验证.想要了解之前的相关信息请看下面的链接: 隔壁寝室刷问卷刷疯了 ...
最新文章
- dll的概念、dll导出类(转)
- (0033) iOS 开发之Block 的基础用法及注意事项2
- keepalived实现haproxy高可用详解
- InfoPath读取数据库
- C++ ofstream/ifstream读写文件demo
- pythonopencv算法_opencv python 光流法
- 手动卸载office 2010 亲测有效
- 机器之心线上活动:虚拟现实(VR)与增强现实(AR)
- pytdx 获取板块指数_是否可以获得板块指数8806XX成分股?
- 计算机中所占百分数用哪个函数,Excel中Percentrank函数的使用-计算所占百分比
- iPhone模拟器部分操作
- 手机酒店预订的革命之作——全新艺龙无线手机客户端测评
- 写html和css怎么分屏,如何使用CSS创建分屏(50/50)?
- Python Requests实现天气预报
- 看我使用Python秒变高级程序员
- 牛奶可乐经济学之Q12:为什么公司宁愿奖励员工一辆免费的宝马汽车,而不是等值的现金?
- MACS2 -m/--mfold使用
- 程序员一般通过什么途径接私活?怎样搞兼职
- Linux的nice命令
- Monkey脚本API简介
热门文章
- HihoCode1721删除一个字符之后是回文字符串
- unity片元着色器中获取屏幕坐标_Unity踩坑笔记(持续更新)
- mysql 忘记root_解决MySQL忘记root密码
- 班尼机器人怎么拆_512个焊点独自焊完,武汉一高中生在机器人比赛中摘得五块奖牌...
- 操作系统系列「一」OPERATING SYSTEMS THREE EASY PIECES 《操作系统导论》
- LeetCode 22 括号生成
- Vue——整合与中文化Moment.js解决方案
- Stock Arbitraging
- Little Sub and Applese
- 用java的stream流库在实际项目的使用案例