美文网首页
True与False

True与False

作者: _Cappuccino_ | 来源:发表于2020-01-14 21:36 被阅读0次

    Python 中常用的数据类型 bool(布尔)类型的实例对象(值)就两个,真和假,分别用 TrueFalse表示。
    在if 条件判断和while 语句中经常用到,不过在Python2.x中,True 和False 却有着奇怪的用法,就是真假可以相互被替换,先看下面代码:

    >>> True
    True
    >>> False
    False
    >>> if True:
    ...     print True
    ... 
    True
    >>> if not False:
    ...     print False
    ... 
    False
    

    这段代码逻辑理解起来没任何问题,if 判断中只要表达式的值返回 True,就执行if 代码块中的语句。再来看下一段代码:

    >>> True, False = False, True
    >>> True
    False
    >>> False
    True
    >>> if not True:
    ...     print False
    ... 
    True
    >>> if False:
    ...     print True
    ... 
    False
    >>> 
    

    我把True 和False 互换了一下,就是传说中的颠倒是非黑白。真变成了假,假变成了真。于是在条件判断中,表达式的值返回 False才执行代码块中的语句。究竟是什么原因呢?

    解惑

    在Python2.7 中, TrueFalse是两个内建(built-in)变量,内建变量和普通自定义的变量如a, b, c一样可以被重新赋值,因此我们可以把这两个变量进行任意的赋值,比如:

    True = 2
    False = "abc"
    

    甚至是True和False进行互换

    tmp = True
    True = False
    False = True
    

    互换后变量 True指向了 对象, False指向了 对象:

    因此,在Python 中我们不要随意给True 和False 赋新的值,否则程序代码逻辑都会乱套了。这也算是Python2.x 中一个坑,不过在Python3.x 中,终于把这个两变量变成了关键字,也就是说,程序员再也没法给这两变量赋新的值了,从此 True永远指向 对象, False指向 对象,永不分离。用 keyword模块检测True 和False 是否为关键字。

    >>> import keyword
    >>> keyword.iskeyword('True')
    False
    

    相关文章

      网友评论

          本文标题:True与False

          本文链接:https://www.haomeiwen.com/subject/wxfzactx.html