对象值的比较

比较运算符用来判断同类型对象是否相等,所有的内建类型均支持比较运算,比较运算返回布尔值 True 或 False。

注意,实际进行的比较运算因类型而异。换言之,数字类型根据数值的大小和符号比较,字符串按照字符序列值进行比较,等等。

>>> 2 == 2

True

>>> 2.46 <= 8.33

True

>>> 5+4j >= 2-3j

True

>>> 'abc' == 'xyz'

False

>>> 'abc' > 'xyz'

False

>>> 'abc' < 'xyz'

True

>>> [3, 'abc'] == ['abc', 3]

False

>>> [3, 'abc'] == [3, 'abc']

True

不同于很多其它语言,多个比较操作可以在同一行上进行,求值顺序为从左到右。

>>> 3 < 4 < 7 # same as ( 3 < 4 ) and ( 4 < 7 )

True

>>> 4 > 3 == 3 # same as ( 4 > 3 ) and ( 3 == 3 )

True

我们会注意到比较操作是针对对象的值进行的,也就是说比较的是对象的数值而不是对象本身。

对象身份比较

作为对值比较的补充,Python 也支持对象本身的比较。对象可以被赋值到另一个变量(通过引用)。因为每个变量都指向同一个(共享的)数据对象,只要任何一个引用发生改变,该对象的其它引用也会随之改变。

例 1: foo1 和 foo2 指向相同的对象

foo1 = foo2 = 4.3

当你从值的观点看这条语句时, 它表现的只是一个多重赋值,将 4.3 这个值赋给了 foo1和 foo2 这两个变量。这当然是对的, 不过它还有另一层含义。 事实是一个值为 4.3 的数字对象被创建,然后这个对象的引用被赋值给 foo1 和 foo2, 结果就是 foo1 和 foo2指向同一个对象。

例 2: foo1 和 foo2 指向相同的对象

foo1 = 4.3

foo2 = foo1

这个例子非常类似上一个,一个值为 4.3 的数值对象被创建,然后赋给一个变量, 当执行foo2 = foo1 时, foo2 被指向 foo1 所指向的同一个对象, 这是因为 Python 通过传递引用来处理对象。foo2 就成为原始值 4.3 的一个新的引用。 这样 foo1 和 foo2 就都指向了同一个对象。

例 3: foo1 和 foo2 指向不同的对象

foo1 = 4.3

foo2 = 1.3 + 3.0

这个例子有所不同。首先一个数字对象被创建,然后赋值给 foo1. 然后第二个数值对象被创建并赋值给 foo2. 尽管两个对象保存的是同样大小的值,但事实上系统中保存的都是两个独立的对象,其中 foo1 是第一个对象的引用, foo2 则是第二个对象的引用。尽管这两个对象有同样大小的数值。

每个对象都天生具有一个计数器,记录它自己的引用次数。这个数目表示有多少个变量指向该对象。Python提供了 is和 is not 运算符来测试两个变量是否指向同一个对象。

a is b

这个表达式等价于下面的表达式

id(a) == id(b)

>>> a = [ 5, 'hat', -9.3]

>>> b = a

>>> a is b

True

>>> a is not b

False

标准类型对象身份比较运算符

运算符 功能

obj1 is obj2 obj1 和 obj2 是同一个对象

obj1 is not obj2 obj1 和 obj2 不是同一个对象

布尔类型

布尔逻辑运算符 and, or 和 not 都是 Python 关键字,这些运算符的优先级按从高到低的顺序not、and、or; not 运算符拥有最高优先级,只比所有比较运算符低一级。 and 和 or运算符则相应的再低一级。

标准类型布尔运算符

运算符 功能

not expr expr 的逻辑非 (否)

expr1 and expr2 expr1 和 expr2 的逻辑与

expr1 or expr2 expr1 和 expr2 的逻辑或

python运算符的分类_python对象——标准类型运算符相关推荐

  1. python语言中包含的标准数据类型_Python对象——标准类型的分类

    如果让我们最啰嗦的描述标准类型,我们也许会称它们是Python 的"基本内建数据对象原始类型". z "基本",是指这些类型都是Python 提供的标准或核心类 ...

  2. python十大标准_python对标准类型的分类

    python的标准类型可以按照三种方式分类. 一.按存储模型分类 按存储模型分可以分为原子(标量)类型和容器类型. 原子(标量)类型指对象(这里的对象不是对象数据类型,而是任何可能的值)的值只能含有一 ...

  3. python运算符的分类_Python运算符有哪些类型?Python学习

    学习Python的时候,我们会遇到各种各样的内容,比如说运算符,近期有很多小伙伴都在问:Python运算符有哪些?运算符有哪些类型?接下来跟着小编一起来看看吧. Python运算符包括:算术运算符.关 ...

  4. python语言函数库_Python 的标准库,从0到1学Python

    1.1. 介绍软件测试业务流程的梳理技巧 - 乐搏软件教育 - 软件测试 - Powered By EduSoho​17lebo.com Python 的标准库包括了很多的模块, 从 Python 语 ...

  5. python决策树 多分类_Python中的决策树分类:您需要了解的一切

    python决策树 多分类 什么是决策树? (What is Decision Tree?) A decision tree is a decision support tool that uses ...

  6. python怎么显示提示_Python中的类型提示(中)

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 3.接口存根文件 这个选项允许你如下图一般保存你的代码: 并在原文件的旁边添加一个扩展名为pyi的文件: ...

  7. python属性访问顺序_Python 对象属性的访问

    在 Python 中,一切皆对象.属性访问可以理解为是从一个已有的对象中获得另一个对象的方法.对象属性的访问涉及到对象的 __dict__ 属性.描述符等概念,以及 __getattribute__. ...

  8. python 装饰器分类_Python 装饰器(Decorators) 超详细分类实例

    Python装饰器分类 Python 装饰器函数: 是指装饰器本身是函数风格的实现; 函数装饰器: 是指被装饰的目标对象是函数;(目标对象); 装饰器类 : 是指装饰器本身是类风格的实现; 类装饰器 ...

  9. python中文件分类_python实现根据文件格式分类

    本文实例为大家分享了python根据文件格式分类的具体代码,供大家参考,具体内容如下 使用到python内置os模块(对目录或文件的新建/删除/属性查看,还提供了对文件以及目录的路径操作).shuti ...

最新文章

  1. 这25条极简Python代码,你还不知道
  2. Velocity笔记--使用Velocity获取动态Web项目名的问题
  3. IPv6 — 网际协议第 6 版
  4. SqlHelper中IN集合场景下的参数处理
  5. 分享大麦UWP版本开发历程-03.GridView或ListView 滚动底部自动加载后续数据
  6. PIL图像处理开发极简教程
  7. 【Mybatis 之应用篇】2_配置解析、属性名问题、日志、分页和注解开发
  8. java1002java,疯狂java学习笔记1002---抽象类及接口
  9. win 2003 联网
  10. .NET架构小技巧(8)——优待异常
  11. 源码安装的php如何启动脚本,PHP源码编译安装管理常用脚本
  12. 极目眺望的tiantianguandan
  13. 32、至少列举8个常用模块都有那些?
  14. 服务器宝塔是什么意思?
  15. 计算机硬盘使用率测试软件,测试硬盘速度的10款软件
  16. 图计算的黄金时代 知识图谱背后的数据价值
  17. typescript基础
  18. OpenStack历史知识
  19. win10锁定计算机后黑屏,win10电脑突然黑屏无法唤醒怎么办?老司机告诉你解决方法...
  20. 【Vue知识点- No8.】网易云音乐案例(vant组件库的使用)

热门文章

  1. IP地址,子网掩码、默认网关,DNS服务器是什么意思
  2. win10下git的配置教程
  3. 详解C++移动语义std::move()
  4. 狄克斯特拉(Dijkstra)算法原理详细解释与实现(python)
  5. [云炬创业管理笔记]第6章制定创业行动测试4
  6. 组会PPT20200522《Summary of Study and Research from May 8 to May 21》
  7. [云炬创业基础笔记]第一章创业环境测试10
  8. [云炬创业基础笔记] 第四章测试17
  9. 云炬Android开发笔记 6启动图功能开发与封装
  10. oracle 11g 从rman全备中恢复控制文件,拥有RMAN全备(缺少后增文件),丢失全部数据文件,控制文件的恢复...