zoukankan      html  css  js  c++  java
  • python中,a=10.0 b=10.0 a is b 为什么输出是false

    >>>a=10.0>>>b=10.0>>>a is bFalse为什么当a=10,b=10时,a is b输出的是True呢?

    >>>a=10.0

    >>>b=10.0
    >>>a is b
    False

    为什么当a=10,b=10时,a is b 输出的是True呢?

    a is b

    比较的是变量a与变量b的内存地址是否相同,即

    id(a)==id(b)

    Python的内置函数id就是用来查看变量地址的

    id(a)等于id(b)说明变量a和变量b指向的是同一个内存空间。

    Python中整数、浮点数都是immutable,也就是创建以后不能改变内存空间的值,对变量重新赋值以后,相当于变量重新指向了另外一处内存空间。

    a = 10
    print id(a)
    a = a + 1
    print id(a) #id(a)的值会反生变化

    这样,多个变量指向相同的内存空间就不会有影响,反而节省了内存的占用。

    然而具体是否相同值的变量就占有相同内存空间,完全有Python的实现方式决定。

    当变量a与b的值到1000时,你会发现他们的内存空间又不一样了

    a = 1000
    b = 1000
    id(a) == id(b)
    a is b

    总的来说写程序是一般不用关注变量的内存空间地址,也很少使用is命令

    python中仅缓存简单的整型,(-1,100)。这个a=10,b=10,指向相同的整型对象,但是a=10.0和b=10.0时,并没有指向相同的浮点型对象。

  • 相关阅读:
    .net core 认证与授权(三)
    .net core 认证与授权(二)
    .net core 认证与授权(一)
    算法常识——快速排序
    ip 在网络传输中是如何传递的
    打开c++ 项目遇到的错误
    算法常识——鸡尾酒排序
    算法常识——冒泡排序
    算法常识——排序汇
    Tomcat 生产服务器性能优化
  • 原文地址:https://www.cnblogs.com/lmh001/p/9858909.html
Copyright © 2011-2022 走看看