zoukankan      html  css  js  c++  java
  • python中“is”和“==”的区别

    最近在刷题时,有一道题需要判断下2个字符串是否相等

    开始的时候,是用"is"来进行判断的,例如  a is b 

    但是实际运行时,发现并未得到预期的判断结果(看来里面发生了什么我不知道的事情~~)


     网上冲浪一番,很轻松就找到了答案

    原文传送门:https://www.zhihu.com/question/20179728

    备份:

    Python中,万物皆对象,每个对象包含3个属性,id,type,value

    id就是对象地址,可以通过内置函数id()查看对象引用的地址;

    type就是对象类型,可以通过内置函数type()查看对象的类型;

    value就是对象的值;

    is 比较的是 id 是否一样,== 比较的是 值 是否一样


     python为每个对象分配内存的机制

    1、python在为数字分配内存时,按照数字的内容来分配内存,即a = 5;b = 5时,python只对数字5分配一块内存空间,而不是对变量a和b各分配一块内存;(在python交互式界面有内存池缓存机制,只适用于-5~256,在python脚本编程中则没有这个限制)

    2、在计算机中,每一块内存都有一个唯一的地址以供变量去访问内存中的内容,这个地址会被赋给变量的id属性,所以a = 5;b = 5时a和b的id是一样的,都是5所在内存的地址。

    3、在计算机中,当地址指定后,这块地址对应的内存时唯一确定的。

    is就是用来判断两个变量的id是否相等,当两个变量的id相等时,说明这两个变量指向的地址是相同的,那么这两个变量的一切属性都相同。


     所以,如果想判断2个字符串的是否相等时,使用 == 肯定不会出错的

  • 相关阅读:
    chrome安装vue-devtools
    企业网络设计
    nginx的安装
    Typora 的使用
    如何学习dubbo?
    关于原码反码和补码以及byte&0xff
    HttpClient以及连接池的使用
    计算机网络读书笔记:tcp面试常见问题都在里面了
    接口类是否继承自Object?
    数据挖掘会议记录
  • 原文地址:https://www.cnblogs.com/hanmk/p/13760341.html
Copyright © 2011-2022 走看看