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?相关推荐

  1. python axis 0_Python之NumPy(axis=0/1/2...)的透彻理解

    https://blog.csdn.net/sky_kkk/article/details/79725646 numpy中axis取值的说明 首先对numpy中axis取值进行说明:一维数组时axis ...

  2. python中0、1、True、False、if条件

    总结: 无论是python还是C++,true=1,false=0 非零就是true,此说法只应用在判断条件中 1.python中0.1.True.False >>> print(T ...

  3. python spark2.0_Python+Spark2.0+hadoop学习笔记——Python Spark MLlib决策树二分类

    决策树是在数据分类问题中的一种常用且经典的机器学习方法,在本例里使用决策树模型来分析StumbleUpon数据集,来预测网页是暂时的(ephemeral)还是长青的(evergreen),并且调教参数 ...

  4. 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 ...

  5. 从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? 什么 ...

  6. 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 首先准备安装环 ...

  7. python参考手册 豆瓣_详解python 模拟豆瓣登录(豆瓣6.0)

    最近在学习python爬虫,看到网上有很多关于模拟豆瓣登录的例子,随意找了一个试了下,发现不能运行,对比了一下代码和豆瓣网站,发现原来是豆瓣网站做了修改,增加了反爬措施. 首先看下要模拟登录的网站: ...

  8. python中24≤2825是否合法_在下列Python语句中非法的是() (2.0分)_学小易找答案

    [其它]统计一个文件中的字符数.单词数(单词由空格分隔)和行数,并将某个指定的字符串从该文件中所有出现的地方删除.程序应提示用户输入指定的文件名和要删除的字符串. [单选题]在下列Python语句中非 ...

  9. python自动化------问卷星刷问卷3.0版本

    接上,之前做的问卷星刷问卷的功能单一,每个题目只能选一个选项.现在的3.0版本功能增加了计数器(刷了几份问卷).多选项的选择.通过滑块验证.想要了解之前的相关信息请看下面的链接: 隔壁寝室刷问卷刷疯了 ...

最新文章

  1. dll的概念、dll导出类(转)
  2. (0033) iOS 开发之Block 的基础用法及注意事项2
  3. keepalived实现haproxy高可用详解
  4. InfoPath读取数据库
  5. C++ ofstream/ifstream读写文件demo
  6. pythonopencv算法_opencv python 光流法
  7. 手动卸载office 2010 亲测有效
  8. 机器之心线上活动:虚拟现实(VR)与增强现实(AR)
  9. pytdx 获取板块指数_是否可以获得板块指数8806XX成分股?
  10. 计算机中所占百分数用哪个函数,Excel中Percentrank函数的使用-计算所占百分比
  11. iPhone模拟器部分操作
  12. 手机酒店预订的革命之作——全新艺龙无线手机客户端测评
  13. 写html和css怎么分屏,如何使用CSS创建分屏(50/50)?
  14. Python Requests实现天气预报
  15. 看我使用Python秒变高级程序员
  16. 牛奶可乐经济学之Q12:为什么公司宁愿奖励员工一辆免费的宝马汽车,而不是等值的现金?
  17. MACS2 -m/--mfold使用
  18. 程序员一般通过什么途径接私活?怎样搞兼职
  19. Linux的nice命令
  20. Monkey脚本API简介

热门文章

  1. HihoCode1721删除一个字符之后是回文字符串
  2. unity片元着色器中获取屏幕坐标_Unity踩坑笔记(持续更新)
  3. mysql 忘记root_解决MySQL忘记root密码
  4. 班尼机器人怎么拆_512个焊点独自焊完,武汉一高中生在机器人比赛中摘得五块奖牌...
  5. 操作系统系列「一」OPERATING SYSTEMS THREE EASY PIECES 《操作系统导论》
  6. LeetCode 22 括号生成
  7. Vue——整合与中文化Moment.js解决方案
  8. Stock Arbitraging
  9. Little Sub and Applese
  10. 用java的stream流库在实际项目的使用案例