Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the true and false criteria for a python object? [duplicate]

I have seen the following cases:

>>> def func(a):
...     if a:
...         print("True")
...
>>> a = [1, 2, 3]
>>> func(a)
True
>>> a == True
False

Why does this difference occur?

like image 272
SeokJun Yeom Avatar asked Apr 29 '17 06:04

SeokJun Yeom


People also ask

How do you know if a Python is true or false?

You can check if a value is either truthy or falsy with the built-in bool() function. According to the Python Documentation, this function: Returns a Boolean value, i.e. one of True or False .

What are the values in Python that evaluate to false?

Python boolean data type has two values: True and False . Use the bool() function to test if a value is True or False . The falsy values evaluate to False while the truthy values evaluate to True . Falsy values are the number zero, an empty string, False, None, an empty list, an empty tuple, and an empty dictionary.

Is False an object in Python?

All Python objects can be used in expressions that should return a boolean value, like in an if or while statement. Python's built-in objects are usually Falsy (interpreted as False ) when they are “empty” or have “no value” and otherwise they are Truthy (interpreted as True ).

What evaluates to true in Python?

First, we look at what kind of values evaluate to "True" or "False" in python. Anything that is "empty" usually evaluates to False, along with the integer 0 and the boolean value of False. Objects that are not empty evaluate to "True", along with numbers not equal to 0, and the boolean value True.


2 Answers

All objects1 in Python have a truth value:

Any object can be tested for truth value, for use in an if or while condition or as operand of the Boolean operations below. The following values are considered false:

  • None

  • False

  • zero of any numeric type, for example, 0, 0.0, 0j.

  • any empty sequence, for example, '', (), [].

  • any empty mapping, for example, {}.

  • instances of user-defined classes, if the class defines a __bool__() or __len__() method, when that method returns the integer zero or bool value False.

All other values are considered true — so objects of many types are always true.


1 … unless they have a __bool__() method which raises an exception, or returns a value other than True or False. The former is unusual, but sometimes reasonable behaviour (for example, see the comment by user2357112 below); the latter is not.

like image 163
Zero Piraeus Avatar answered Oct 05 '22 01:10

Zero Piraeus


When you type if a:, it is equivalent to if bool(a):. So it doesn't mean that a is True, only that a's representation as a boolean value is True.

Generally speaking bool is a subclass of int, where True == 1 and False == 0.

like image 28
Dean Fenster Avatar answered Oct 05 '22 02:10

Dean Fenster