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时,并没有指向相同的浮点型对象。

  • 相关阅读:
    二叉树的创建、遍历、翻转
    KVO
    Objective-C Runtime 的一些理解
    深浅拷贝、copy的使用
    Python学习笔记(二)
    Python常见陷阱
    [LeetCode] 36. Valid Sudoku
    [LeetCode] 35. Search Insert Position
    [LeetCode] 34. Search for a Range
    [LeetCode] 33. Search in Rotated Sorted Array
  • 原文地址:https://www.cnblogs.com/lmh001/p/9858909.html
Copyright © 2011-2022 走看看