Η Python αναπαριστά τις αληθείς και ψευδείς τιμές με τον τύπο bool, ο οποίος είναι υποκλάση του int. Υπάρχουν μόνο δύο Boolean τιμές σε αυτόν τον τύπο: True και False. Αυτές οι τιμές μπορούν να ανατεθούν σε μια μεταβλητή και να συνδυαστούν με τους τελεστές Boolean (and, or, not):
>>> true_variable = True and True
>>> false_variable = True and False
>>> true_variable = False or True
>>> false_variable = False or False
>>> true_variable = not False
>>> false_variable = not True
Οι τελεστές Boolean χρησιμοποιούν αποτίμηση βραχυκυκλώματος, που σημαίνει ότι η έκφραση στη δεξιά πλευρά του τελεστή αποτιμάται μόνο αν χρειάζεται.
Κάθε τελεστής έχει διαφορετική προτεραιότητα: το not αποτιμάται πριν από το and και το or. Οι παρενθέσεις μπορούν να χρησιμοποιηθούν για να αποτιμηθεί ένα μέρος της έκφρασης πριν από τα υπόλοιπα:
>>> not True and True
False
>>> not (True and False)
True
Όλοι οι boolean operators θεωρούνται χαμηλότερης προτεραιότητας από τους comparison operators της Python, όπως τα ==, >, <, is και is not.
Η συνάρτηση bool (bool()) μετατρέπει οποιοδήποτε αντικείμενο σε μια Boolean τιμή. Από προεπιλογή, όλα τα αντικείμενα επιστρέφουν True, εκτός αν έχει οριστεί να επιστρέφουν False.
Μερικά built-ins θεωρούνται πάντα False εξ ορισμού:
None και False
int, float, complex, decimal ή fraction)str, list, set, tuple, dict, range(0))>>> bool(None)
False
>>> bool(1)
True
>>> bool(0)
False
>>> bool([1,2,3])
True
>>> bool([])
False
>>> bool({"Pig" : 1, "Cow": 3})
True
>>> bool({})
False
Όταν ένα αντικείμενο χρησιμοποιείται σε ένα Boolean περιβάλλον, αξιολογείται με διαφάνεια ως truthy ή falsey χρησιμοποιώντας τη bool():
>>> a = "is this true?"
>>> b = []
# This will print "True", as a non-empty string is considered a "truthy" value
>>> if a:
... print("True")
# This will print "False", as an empty list is considered a "falsey" value
>>> if not b:
... print("False")
Οι κλάσεις μπορούν να ορίσουν πώς αξιολογούνται σε καταστάσεις truthy, αν υπερκαλύπτουν και υλοποιούν μια μέθοδο __bool__(), ή/και μια μέθοδο __len__().
Ο τύπος bool είναι υλοποιημένος ως υπο-τύπος του int. Αυτό σημαίνει ότι το True είναι αριθμητικά ίσο με το 1 και το False είναι αριθμητικά ίσο με το 0. Αυτό είναι παρατηρήσιμο όταν τα συγκρίνουμε με έναν τελεστή ισότητας:
>>> 1 == True
True
>>> 0 == False
True
Ωστόσο, τα bools είναι ακόμα διαφορετικά από τα ints, όπως φαίνεται όταν τα συγκρίνουμε με τον τελεστή ταυτότητας, το is:
>>> 1 is True
False
>>> 0 is False
False
Σημείωση: στην python >= 3.8, η χρήση ενός literal (όπως
1,'',[]ή{}) στην αριστερή πλευρά τουisθα εμφανίσει μια προειδοποίηση.
Θεωρείται αντιπρότυπο της Python να χρησιμοποιείς τον τελεστή ισότητας για να συγκρίνεις μια μεταβλητή Boolean με το True ή το False. Αντ' αυτού, θα πρέπει να χρησιμοποιείς τον τελεστή ταυτότητας is:
>>> flag = True
# Not "Pythonic"
>>> if flag == True:
... print("This works, but it's not considered Pythonic.")
# A better way
>>> if flag:
... print("Pythonistas prefer this pattern as more Pythonic.")