前言

在开始本文之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、python type()(数据类型)和value(值)。is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。下面来看看具体区别在哪。

发现问题

最近在给小伙伴写段小代码用于爬取一个GIS的各高层数据,python中使用了”is”来代替”==”,结果下载至512的时候出了问题。

代码如下

def get_next(x, y, z):

z += 1

if z is 2**x: # 应该用if z == 2**x

y += 1

z = 0

if y is 2**(x+1):

x += 1

y = 0

return x, y, z

这是用来获取下一个高层数据的URL的函数,结果第二天,小伙伴告诉我说下载到x == 9, y == 0, z == 512的时候停止下载了。

探索

首先,根据上述代码可以知道,z按照逻辑是不可能等于512的,所有开始怀疑是不是这个函数有问题,但是这么简单的函数,怎么看都不应该有问题啊。于是开始跟代码,发现

if z is 2**x

处,x == 9, y == 0, z == 512时,if后面居然返回的是False。我拿计算器算了好几遍,确定自己不是在二次元后,开始怀疑is的问题。

结果

在StackOverflow上面找到了答案

is will return True if two variables point to the same object, == if the objects referred to by the variables are equal.

>>> a = [1, 2, 3]

>>> b = a

>>> b is a

True

>>> b == a

True

>>> b = a[:]

>>> b is a

False

>>> b == a

True

In your case, the second test only works because Python caches small integer objects, which is an implementation detail. For larger integers, this does not work:

>>> 1000 is 10**3

False

>>> 1000 == 10**3

True

然后自己写了个小段子看看最大的可复用的int是多大

a = 0

b = 0

while a is b:

a += 1

b += 1

最后发现最大是256。

小结:

==比较操作符:用来比较两个对象是否相等,value做为判断因素;

is同一性运算符:比较判断两个对象是否相同,id做为判断因素。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

在python中等号前面与后面分别是什么意思-python中is与双等于号“==”的区别示例详解...相关推荐

  1. python中等于号可以用is代替_python中is与双等于号“==”的区别示例详解

    前言 在开始本文之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比较判断作用的,但对对 ...

  2. python中一个等于号和两个等于号_python中is与双等于号“==”的区别示例详解

    前言 在开始本文之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比较判断作用的,但对对 ...

  3. 在python中等号前面与后面分别是什么意思-Python中%是什么意思?python中百分号如何使用?...

    常见的两种 第一种:数值运算 1 % 3 是指模运算, 取余数(remainder) >>> 7%2 1 # -*- coding: utf-8 -*- ''' python读取文件 ...

  4. 在python中等号前面与后面分别是什么意思-Python中冒号等于(:=)是什么意思?...

    你发现的是伪代码伪代码是对计算机程序或其他算法的操作原理的非正式的高级描述. 该:=运营商实际上是赋值运算符.在python中,这只是=运算符. 要将此伪代码转换为Python,您需要知道所引用的数据 ...

  5. python中一个等于号和两个等于号_Python中is与双等于号“==”的区别

    Python有两个用于相等比较的运算符,"is"和"=="(等于).在这篇文章中,我将带你们了解Python中"is"和"==&q ...

  6. python两个等于号是代表什么_Python中is与双等于号“==”的区别

    Python有两个用于相等比较的运算符,"is"和"=="(等于).在这篇文章中,我将带你们了解Python中"is"和"==&q ...

  7. python中3or5什么意思_示例详解Python3 or Python2 两者之间的差异

    每门编程语言在发布更新之后,主要版本之间都会发生很大的变化. 在本文中,Vinodh Kumar 通过示例解释了 Python 2 和 Python 3 之间的一些重大差异,以帮助说明语言的变化. 本 ...

  8. python时间函数报错_python3中datetime库,time库以及pandas中的时间函数区别与详解...

    1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Servic ...

  9. python获取系统时间函数_python3中datetime库,time库以及pandas中的时间函数区别与详解...

    1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Servic ...

最新文章

  1. 学习Matlab强大的符号计算(解方程)
  2. 使用VS Code进行远程连接
  3. 在eclipse中修改java web项目的名称
  4. python3.6卸载教程_Python3.6安装卸载、执行命令、执行py文件的方法详解
  5. python字符串解析_Python-字符串解析-正则-re
  6. docker java镜像_Springboot整合MongoDB的Docker开发,其它应用也类似
  7. seata 如何开启tcc事物_分布式事务Seata-TCC源码分析
  8. VMware产品支持倒计时
  9. python列表大于60_Python使用filter如何对给定列表中的数字进行过滤,保留大于等于60的数字?...
  10. winform,wpf全屏 还显示任务栏的解决方法
  11. 第一章 Javscript的数据类型
  12. 『图解』深度可分离卷积
  13. 利用Python实现财务分析/经营分析自动化
  14. python调节电脑音量_python如何调节音量大小
  15. Android与H5相互接口调用及Android端接口整理
  16. Python2.7爬虫——爬取微信公众号文章
  17. matplotlib常用绘图风格
  18. 若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有多少头母牛?
  19. Ros 全局规划使用carrot_planner/CarrotPlanner和global_planner/GlobalPlanner
  20. 混合云解决方案:统一化、简化、创新化

热门文章

  1. java如何重新执行函数_java如何遍历执行方法/函数
  2. mysql数据库报错1146_关于MySQL报错:[ERR] 1146
  3. Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)——无非是在传统遍历过程中修改叶子结点加入后继结点信息(传统是stack记录),然后再删除恢复...
  4. mysql 四舍五入
  5. eclipse egit提交方法
  6. 前后端对接的思考及总结
  7. Solr中Field常用属性
  8. 银行、航空软件结构图
  9. Apache+Tomcat +mod_proxy集群负载均衡及session
  10. SharePoint 列表应用实例 - 显示约束