zoukankan      html  css  js  c++  java
  • (一)Python入门-2编程基本概念:12同一运算符-整数缓存问题

    一:同一运算符

      同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。

    运算符 描述
    is  is是判断两个标识符是不是引用同一个对象
    is not  is not 是判断两个标识符是不是引用不同对象

      is 与 == 区别:
        is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。
        == 用于判断两个变量引用对象的值是否相等,默认调用对象的 __eq__()方法。

    二:整数缓存问题

      Python仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对象。需要注意的是,这仅仅是在命令行中执行时,而在Pycharm或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。

    总结:

      1、is 比较两个对象的 id 值是否相等,是否指向同一个内存地址;

      2、== 比较的是两个对象的内容是否相等,值是否相等;

      3、小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用;

      4、is 运算符比 == 效率高,在变量和None进行比较时,应该使用 is。

      【操作】同一运算符测试

     1 >>> a=1000
     2 >>> b=1000
     3 >>> a == b
     4 True
     5 >>> a is b
     6 False
     7 >>> id(a)
     8 1799963429808
     9 >>> id(b)
    10 1799964263632
    11 >>> c = 10
    12 >>> d = 10
    13 >>> c is d
    14 True
    15 >>> id(c)
    16 140735929836656
    17 >>> id(d)
    18 140735929836656
  • 相关阅读:
    Scrum Works 1.84安装
    使用Sandcastle Styles 来生成VS2008的帮助文档.
    NDoc 用户指南(转)
    第一章 C#语言基础(C# Language Elements)
    SQL Server 2005 中删除重复记录
    SDE 远程连接
    C# 按钮美化技巧
    SOP 中的 Service
    C# DateTime赋值为null
    C# WebBrowser显示html字符串
  • 原文地址:https://www.cnblogs.com/jack-zh/p/10810680.html
Copyright © 2011-2022 走看看