• [python学习篇][书籍学习][python standrad library][内置类型]对象测试真值,布尔值操作, 比较操作


    几乎所有对象都可以比较、测试真值、转换为字符串(其实就是用repr()函数,或略有差异的str()函数来转换)

    1 对象是否为真

    任何对象都可以测试真值,用于ifwhile的条件或下面布尔运算的操作数。下面的值被视为假:

    • None

    • False

    • 任何数值类型的零,例如,0、 0L0.0、 0j

    • 任何空的序列,例如, ''、 ()、 []

    • 任何空的映射,例如,{}

    • 用户定义的类的实例,如果该类定义一个__nonzero__()__len__()的方法,在该方法返回整数零或布尔False时。[1]

    所有其他值都被视为真 — 所以许多类型的对象永远为真。

    除非另有说明,结果为布尔值的运算和内建函数总是返回0False表示假,1True表示真(重要的例外:布尔操作符orand始终返回它们的一个操作数。)

    2 布尔值操作 or and not 

    这些是布尔操作,按升序优先排序:

    操作结果
    or y 如果x为假,那么返回y,否则返回x (1)
    and y 如果x为假,那么返回x,否则返回y (2)
    not x 如果x为假,那么返回True,否则返回False (3)

    注:

    1. 这是一个短路操作符,因此只有第一个参数为False时才计算第二个参数。
    2. 这是一个短路操作符,因此只有第一个参数为True时才计算第二个参数。
    3. not比非布尔操作符的优先级低,因此not == b解释为not (a == b)== not b是一个语法错误。

    比较操作

    所有对象都支持比较操作。它们都具有相同的优先级(高于布尔操作)。比较可以任意链接;例如,< = z相当于and < = z,只是y只计算一次(但这两种情况在y为假时都不会计算z)。

    下表汇总了比较操作:

    操作含义
    < 严格地小于  
    <= 小于或等于  
    > 严格地大于  
    >= 大于或等于  
    == 等于  
    != 不等于 (1)
    is 对象的ID  
    is not 不同的对象ID  

    注:

    1. !=也可以写成<>,但这只是用于保持向后兼容性的用法。新的代码应该一直使用!=

    不同类型的对象,不同的数值和字符串类型除外,比较结果永远不会相等;这类对象排序的结果永远一致但是顺序却是随机的(使得异构数组的排序可以生成一致的结果)。此外,某些类型(例如,文件对象)只支持退化的比较概念,该类型的任何两个对象都不相等。同样,这类对象排序的顺序是随机的但是会永远是一致的。当任何一个操作数是复数时,< = >> =运算符会引发TypeError异常。

    类的非同一个实例比较时通常不相等,除非该类定义__eq__()__cmp__()方法。

    一个类的实例通常不能与同一个类的其它实例或者其他类型的对象排序,除非该类定义足够丰富的比较方法(__ge__()__le__()__gt__()__lt__())或__cmp__()方法。

  • 相关阅读:
    react redux 使用
    github 退出和别人共同开发的仓库
    在react package.json中配置代理解决跨域
    禁止浏览器sources下webpack文件 显示源码
    redux connect 装饰器配置和安装
    Odoo 在action的domain和context中使用self.env
    odoo 字段后面添加button按钮,页签tree再加group显示字段
    Odoo -- 开发者模式创建的群组、动作没有xml id怎么办
    Mac必备神器Homebrew mac下镜像飞速安装Homebrew教程
    Vue -- keyup、watch、computed、nrm的安装
  • 原文地址:https://www.cnblogs.com/liuzhipenglove/p/7225303.html
Copyright © 2020-2023  润新知