How do I use a Boolean in Python?

后端 未结 7 1542
栀梦
栀梦 2020-12-02 12:31

Does Python actually contain a Boolean value? I know that you can do:

checker = 1
if checker:
    #dostuff

But I\'m quite pedantic and enjo

相关标签:
7条回答
  • 2020-12-02 13:09

    Boolean types are defined in documentation:
    http://docs.python.org/library/stdtypes.html#boolean-values

    Quoted from doc:

    Boolean values are the two constant objects False and True. They are used to represent truth values (although other values can also be considered false or true). In numeric contexts (for example when used as the argument to an arithmetic operator), they behave like the integers 0 and 1, respectively. The built-in function bool() can be used to cast any value to a Boolean, if the value can be interpreted as a truth value (see section Truth Value Testing above).

    They are written as False and True, respectively.

    So in java code remove braces, change true to True and you will be ok :)

    0 讨论(0)
  • True ... and False obviously.

    Otherwise, None evaluates to False, as does the integer 0 and also the float 0.0 (although I wouldn't use floats like that). Also, empty lists [], empty tuplets (), and empty strings '' or "" evaluate to False.

    Try it yourself with the function bool():

    bool([])
    bool(['a value'])
    bool('')
    bool('A string')
    bool(True)  # ;-)
    bool(False)
    bool(0)
    bool(None)
    bool(0.0)
    bool(1)
    

    etc..

    0 讨论(0)
  • 2020-12-02 13:23
    checker = None 
    
    if some_decision:
        checker = True
    
    if checker:
        # some stuff
    

    [Edit]

    For more information: http://docs.python.org/library/functions.html#bool

    Your code works too, since 1 is converted to True when necessary. Actually Python didn't have a boolean type for a long time (as in old C), and some programmers still use integers instead of booleans.

    0 讨论(0)
  • 2020-12-02 13:23

    Yes, there is a bool data type (which inherits from int and has only two values: True and False).

    But also Python has the boolean-able concept for every object, which is used when function bool([x]) is called.

    See more: object.nonzero and boolean-value-of-objects-in-python.

    0 讨论(0)
  • 2020-12-02 13:28

    Booleans in python are subclass of integer. Constructor of booleans is bool. bool class inherits from int class.

     issubclass(bool,int) // will return True
     isinstance(True,bool) , isinstance(False,bool) //they both True
    

    True and False are singleton objects. they will retain same memory address throughout the lifetime of your app. When you type True, python memory manager will check its address and will pull the value '1'. for False its value is '0'.

    Comparisons of any boolean expression to True or False can be performed using either is (identity) or == (equality) operator.

    int(True) == 1
    int(False) == 0
    

    But note that True and '1' are not the same objects. You can check:

     id(True) == id(1) // will return False
    

    you can also easily see that

      True > False // returns true cause 1>0
    

    any integer operation can work with the booleans.

      True + True + True =3 
    

    All objects in python have an associated truth value. Every object has True value except:

    • None

    • False

    • 0 in any numeric type (0,0.0,0+0j etc)

    • empty sequences (list, tuple, string)

    • empty mapping types (dictionary, set, etc)

    • custom classes that implement __bool__ or __len__ method that returns False or 0.

    every class in python has truth values defined by a special instance method:

     __bool__(self)   OR
     __len__
    

    When you call bool(x) python will actually execute

     x.__bool__() 
    

    if instance x does not have this method, then it will execute

     x.__len__()
    

    if this does not exist, by default value is True.

    For Example for int class we can define bool as below:

      def __bool__(self):
          return self != 0
    

    for bool(100), 100 !=0 will return True. So

    bool(100) == True

    you can easily check that bool(0) will be False. with this for instances of int class only 0 will return False.

    another example= bool([1,2,3])

    [1,2,3] has no __bool__() method defined but it has __len__() and since its length is greater than 0, it will return True. Now you can see why empty lists return False.

    0 讨论(0)
  • 2020-12-02 13:30

    The boolean builtins are capitalized: True and False.

    Note also that you can do checker = bool(some_decision) as a bit of shorthand -- bool will only ever return True or False.

    It's good to know for future reference that classes defining __nonzero__ or __len__ will be True or False depending on the result of those functions, but virtually every other object's boolean result will be True (except for the None object, empty sequences, and numeric zeros).

    0 讨论(0)
提交回复
热议问题