比较运算符,也成关系运算符,用于对常量、变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则返回 True;反之,则返回 False。

Python 支持的比较运算符如表 1 所示。

表 1 Python 比较运算符
比较运算符 功能
> 大于,如果运算符前面的值大于后面的值,则返回 True;否则返回 False
>= 大于或等于,如果运算符前面的值大于或等于后面的值,则返回 True;否则返回 False
< 小于,如果运算符前面的值小于后面的值,则返回 True;否则返回 False
<= 小于或等于,如果运算符前面的值小于或等于后面的值,则返回 True;否则返回 False
== 等于,如果运算符前面的值等于后面的值,则返回 True;否则返回 False
!= 不等于,如果运算符前面的值不等于后面的值,则返回 True;否则返回 False
is 判断两个变量所引用的对象是否相同,如果相同则返回 True
is not 判断两个变量所引用的对象是否不相同,如果不相同则返回 True

下面程序示范了比较运算符的基本用法:

>>> print("5是否大于 4:", 5 > 4)
5是否大于 4: True
>>> print("3的4次方是否大于等于90.0:", 3 ** 4 >= 90)
3的4次方是否大于等于90.0: False
>>> print("20是否大于等于20.0:", 20 >= 20.0)
20是否大于等于20.0: True
>>> print("5和5.0是否相等:", 5 == 5.0)
5和5.0是否相等: True
>>> print("True和False是否相等:", True == False)
True和False是否相等: False
>>>

比较运算符 == 和 is 的区别

初学 Python,大家可能对 is 比较陌生,很多人会误将它和 == 的功能混为一谈,但其实 is 与 == 有本质上的区别,完全不是一码事儿。

== 用来比较两个变量的值是否相等,而 is 则用来比对两个变量引用的是否是同一个对象,例如:

  1. import time
  2. # 获取当前时间
  3. a = time.gmtime()
  4. b = time.gmtime()
  5. print(a == b) # a和b两个时间相等,输出True
  6. print(a is b) # a和b不是同一个对象,输出False

上面代码中 a、b 两个变量都代表当前系统时间,因此 a、b 两个变量的时间值是相等的(代码运行速度很快,能保证是同一时间),故程序使用“==”判断返回 True。但由于 a、b 两个变量分别引用不同的对象(每次调用 gmtime() 函数都返回不同的对象),因此a is b返回 False。

那么,如何判断两个变量是否属于一个对象呢?Python 提供了一个全局的 id() 函数,它可以用来判断变量所引用的对象的内存地址(相当于对象在计算机内存中存储位置的门牌号),如果两个对象所在的内存地址相同(相当于它们住在同一个房间内,计算机同一块内存在任一时刻只能存放一个对象),则说明这两个对象其实是同一个对象。

由此可见,is 判断其实就是要求通过 id() 函数计算两个对象时返回相同的地址。例如,使用 id() 函数判断上面的 a、b 两个变量:

print(id(a))
print(id(b))

从运行结果中将会看到 a、b 两个变量所引用的对象的内存地址是不同的,这样通过 is 来判断 a、b 两个变量自然也就输出 False 了。

再举一个例子:

>>> a = 'cheesezh'
>>> b = 'cheesezh'
>>> id(a)
2680257978480
>>> id(b)
2680257978480
>>> a is b
True

24.Python比较运算符(关系运算符的更多相关文章

  1. java入门---运算符&算术运算符&自增自减运算符&关系运算符&位运算符

        计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 ...

  2. 解释一下python中的关系运算符

    关系运算符用于比较两个值 1.小于号,如果左边的值较小,则返回Trueprint('hi'<'Hi')#False 2.大于号,如果左边的值较大,则返回Trueprint(1.1+2.2> ...

  3. javascript运算符——关系运算符

    × 目录 [1]恒等 [2]相等 [3]大于[4]小于 前面的话 关系运算符用于测试两个值之间的关系,根据关系是否存在而返回true或false,关系表达式总是返回一个布尔值,通常在if.while或 ...

  4. C语言基础学习运算符-关系运算符

    比较大小 首先,我们得先了解一下布尔类型.C语言的C99标准支持布尔类型,关键字为_Bool,用于表示逻辑值true与false.C语言用值1表示true, 用值0表示false.因此布尔类型实际上是 ...

  5. 算数运算符& 关系运算符

    java中的算数运算符 + - * / % ++ -- + +: 加法运算符 - : 减法运算符 *: 乘法运算符 / : 除法运算符 注意: 除数不能为0,除数为0会报出异常 整数运算默认得到整数, ...

  6. python的比较关系运算符和逻辑运算符

    比较运算符 运算符 描述 示例 == 检查两个操作数的值是否相等,如果是则条件变为真. 如a=2,b=2则(a == b) 为 true. != 检查两个操作数的值是否相等,如果值不相等,则条件变为真 ...

  7. 【Shell脚本学习10】Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等

    Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最 ...

  8. 十一、 BOOL类型、分支结构和关系运算符

    BOOL类型:表示非真即假.只有两个值:YES和NO,而二进制只识别二进制数,所以,将YES替换为“1”,NO替换为“0” BOOL数据类型占一字节的空间内存 BOOL数据类型输出为:%lu:输入为: ...

  9. shell运算符之 关系运算符,算数运算符,布尔运算符,字符串运算符和文件测试运算符

    shell运算符有很多,关系运算符,算数运算符,布尔运算符,字符串运算符和文件测试运算符 1,算术运算符 原声bash 不支持简单的算术运算,可以使用expr 工具 两点注意: 表达式和运算符之间要有 ...

  10. shell之算数运算符、逻辑运算符、关系运算符、布尔运算符、文件测试运算符

    注意事项: (1)bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用: (2)完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Es ...

随机推荐

  1. 区间问题 codeforces 422c+hiho区间求差问

    先给出一个经典的区间处理方法 对每个区间 我们对其起点用绿色标识  终点用蓝色标识 然后把所有的点离散在一个坐标轴上 如下图 这样做有什么意义呢.由于我们的区间可以离散的放在一条轴上面那么我们在枚举区 ...

  2. Pycharm有必要改的几个默认设置项以及快捷键

    最近在用Pycharm学习Python的时候,总有两个地方感觉不是很舒服,比如调用方法的时候区分大小写(thread就不会出现Thread,string就不会出现String)等,这让我稍稍有点不舒服 ...

  3. warning C4819 的解决方法

    编译VC++程序的时候出现如下提示警告: warning C4819: The file contains a character that cannot be represented in the ...

  4. 微信小程序中button去除默认的边框

    button { position:relative; display:block; margin-left:auto; margin-right:auto; padding-left:14px; p ...

  5. YII2中controller中的behaviors中的behavior内部是如何被使用的?

    1. behaviors方法的调用: 在祖先对象components中有一个ensureBehaviors方法,代码如下: /** * Makes sure that the behaviors de ...

  6. centos7重启网卡报Job for network.service failed because...错误

    解决: [root@mina0 hadoop]# systemctl stop NetworkManager[root@mina0 hadoop]# systemctl disable Network ...

  7. mysql 关于字符串搜索的函数

    与like作用相似 FIND_IN_SET LOCATE POSITION

  8. How to: Compile Linux kernel 2.6

      Compiling custom kernel has its own advantages and disadvantages. However, new Linux user / admin ...

  9. Oracle笔记(五) 单行函数

    虽然各个数据库都是支持SQL语句的,但是每一个数据库也有每一个数据库自己所支持的操作函数,这些就是单行函数,而如果要想进行数据库开发的话,除了要会使用SQL之外 ,就是要多学习函数. 单行函数主要分为 ...

  10. Linux内核网络报文简单流程

    转:http://blog.csdn.net/adamska0104/article/details/45397177 Linux内核网络报文简单流程2014-08-12 10:05:09 分类: L ...