Python中“is”和“==”的区别

题图:by thefolkpr0ject from Instagram

阅读文本大概需要 3 分钟。

相比 C/C++ 、Java 等强类型语言, Python 定义变量的方式就简单多了。我们只需要给变量起个变量名,而不需要给变量指定类型。

正因为 Python 弱化类型这一概念,所以我们能随意给变量赋值。值可以是整数,浮点数,字符串,列表等。

a = 1
a = 3.33
a = 'monkey'
a = [1, 2, 3]

凡事都有正反两面。使用弱类型语言编程,我们可以不需要定义变量类型,可以随意转换类型,代码看起来很简介。但是在变量判断是否相等时候,会给我们造成一定困惑。

判断值相等,是选择 “is” 还是 “==” 了?

当你了解 Python 的语言特性之后,这个问题就会迎刃而解。在 Python 中,万物皆为对象。 每个对象有 3 个属性。分别是:id,type,value。

  • id 就是对象的内存地址,可以通过内置函数 id() 查看对象引用的地址。
  • type 表示对象的类型。Python 也是有类型的概念。对于编译器或者解释器而言,类型可以协助确保上面那些电荷、字节在程序的运行中始终如一地被理解。我们可以通过内置函数 type() 查看对象的类型。
  • value 就是对象的值。

综上所述: 如果我们要判断两个变量的值是否相等,需要使用 “==”。一般运用在判断数值和字符串是否相等。

a = '123'
b = '123'
print(a=b)
>> True

c = 1
d = 2
print(c==d)
>> False

is 则是用来判断两个变量的 id 是否相等,当两个变量的 id 相等时,说明这两个变量指向的地址是相同的,那么这两个变量的一切属性(包括:类型、值)都相同。同时,Python 也规定 None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于 False。所以我们可以使用 is 来判断变量是否为空。

str = ""
print(str is None)
>> False
print(str is not None)
>> True

原文发布于微信公众号 - 极客猴(Geek_monkey)

原文发表时间:2018-06-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

工具 | Python集合使用详解

我会在这篇文章介绍Python几种类型的集合。 在开始前,先定义集合是什么。一个集合就像篮子,你可以放进和取出东西,可以是同一类的东西,也可以是不同类的。基本上...

23050
来自专栏小小挖掘机

这或许是我见过的最简单的正则表达式教程(一)

五一劳动节来啦,小小挖掘机们小编们首先祝大家劳动节快乐! 作为中国放假大学的一员,除了趁着长达8天的五一春假好好休整之外,当然还要忙中偷闲补习一下python的...

36750
来自专栏小勇DW3

Java之static作用的全方位总结

 引用一位网友的话,说的非常好,如果别人问你static的作用;如果你说静态修饰 类的属性 和 类的方法 别人认为你是合格的;如果是说 可以构成 静态代码块,...

20520
来自专栏猿人谷

标准库类型

一.标准string类型     string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。 1.1 strin...

20280
来自专栏锦小年的博客

python学习笔记7.3-内建模块collections

Python的内建模块collections为我们提供了一系列的优化操作,本质上就是元组、字典、集合、列表的特殊功能版。 1. namedtuple name...

23250
来自专栏破晓之歌

如何创建对象以及jQuery中创建对象的方式(推荐)

在实际使用当中,字面量创建对象虽然很有用,但是它并不能满足我们的所有需求,我们希望能够能够和其他后台语言一样创建一个类,然后声明类的实例就能够多次使用,而不用每...

15220
来自专栏Python爬虫与数据挖掘

Python正则表达式初识(二)

前几天给大家分享了Python正则表达式初识(一),介绍了正则表达式中的三个特殊字符“^”、“.”和“*”,感兴趣的伙伴可以戳进去看看,今天小编继续给大家分享P...

8610
来自专栏游戏杂谈

LuaJit转义的问题

之前在项目中,处理类似!30转为表现的字符串时,有人写了这样的一段代码“\![1-2][0-9]”,当换成luajit时启动报错了,出错原因在于转义字符使用不对...

18020
来自专栏Python爬虫与数据挖掘

Python正则表达式初识(二)

前几天给大家分享了Python正则表达式初识(一),介绍了正则表达式中的三个特殊字符“^”、“.”和“*”,感兴趣的伙伴可以戳进去看看,今天小编继续给大家分享P...

10330
来自专栏闻道于事

Java常见问题

自古深情留不住,总是套路得人心 最近经历了一次惨无人道的程序员笔试,真的是“笔”试,默默地来整理一下…… 以后遇到问题要多整理…… 常见套路: 当一个变量被赋值...

46460

扫码关注云+社区

领取腾讯云代金券