zoukankan      html  css  js  c++  java
  • Python3中is与==的区别#Python学习02#

    一、区别

    1.is用于判断两个变量引用的对象是否为同一个对象,通俗说是比较对象的地址。

    2.==用于判断两个变量引用对象的值是否相等,默认调用对象的__eq__ ()方法。

    二、详细说明

    python中,一切皆对象。每个对象由三部分组成,即标识(identity)、类型(type)和值(value)。

    a、b均赋值1000,使用==是判断a与b的值是否相等,相等为True;使用is是判断a与b的地址是否相等,很明显是不相等的,a的地址为64777136,b的地址为65907344。

     

     

     

     

     

     

    三、整数缓存问题

    Python 仅对较小的整数对象进行缓存,在命令行中执行时,将在范围为[-5, 256]内的整数对象缓存起来,而不是所有整数对象;而在Pycharm 或者将其保存为文件执行时,Python将在范围为[-5,任意正整数]内的整数对象缓存起来了。

    1.在命令行中,c、d均赋值66,在[-5, 256]范围内,此时c与d的地址是一样的。

     

    2.在文件中运行时,a与b在范围外,没有暂时缓存,而c与d,e与f均暂时缓存了,地址一样。

    四、总结

    1.is 比较两个对象的id 是否相等,是否指向同一个内存地址;
    2.== 比较的是两个对象的内容是否相等,值是否相等;
    3.小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用;
    4.is 运算符比 == 效率高,在变量和None 进行比较时,应该使用is。

  • 相关阅读:
    linux中按行读取指定行
    linux常用配置文件
    linux虚拟机设置网络
    jenkins新建一个robot脚本的job
    jenkins中配置邮件发送
    jenkins中robot framework插件安装
    Jenkins subversion svn插件安装失败
    jenkins节点启动
    {"non_field_errors":["Unable to log in with provided credentials."]}% 无法使用提供的凭据登录
    路径模板
  • 原文地址:https://www.cnblogs.com/cxyxm/p/12589674.html
Copyright © 2011-2022 走看看