115 votes

Comment utiliser un booléen en Python ?

Python contient-il réellement une valeur booléenne ? Je sais que c'est possible :

checker = 1
if checker:
    #dostuff

Mais je suis assez pédant et j'aime voir des booléens en Java. Par exemple :

Boolean checker;
if (someDecision)
{
    checker = true;
}
if(checker)
{
    //some stuff
}

Existe-t-il une chose telle qu'un booléen en Python ? Je ne trouve rien de tel dans la documentation.

0voto

coder Points 2410

Contrairement à Java où l'on déclare boolean flag = True en Python, vous pouvez simplement déclarer myFlag = True

Python interpréterait ceci comme une variable booléenne

0voto

Yilmaz Points 51

Les booléens en python sont des sous-classes des entiers. Le constructeur des booléens est bool . la classe bool hérite de la classe int.

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

True y False sont des objets singleton. Ils conserveront la même adresse mémoire pendant toute la durée de vie de votre application. Lorsque vous tapez True le gestionnaire de mémoire de python vérifiera son adresse et en tirera la valeur '1'. pour False sa valeur est "0".

Comparaisons de toute expression booléenne avec True o False peut être effectuée en utilisant soit is (identité) ou == (égalité).

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

Mais notez que True et '1' ne sont pas les mêmes objets. Vous pouvez vérifier :

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

vous pouvez aussi facilement voir que

  True > False // returns true cause 1>0

toute opération sur les entiers peut fonctionner avec les booléens.

  True + True + True =3 

Tous les objets en python ont une valeur de vérité associée. Chaque objet a True sauf la valeur :

  • Aucun

  • Faux

  • 0 dans n'importe quel type numérique (0,0.0,0+0j etc)

  • séquences vides (liste, tuple, chaîne)

  • types de mappage vides (dictionnaire, ensemble, etc.)

  • des classes personnalisées qui mettent en œuvre __bool__ o __len__ qui renvoie False o 0 .

chaque classe en python a des valeurs de vérité définies par une méthode d'instance spéciale :

 __bool__(self)   OR
 __len__

Lorsque vous appelez bool(x) python exécutera effectivement

 x.__bool__() 

si l'instance x ne possède pas cette méthode, alors il exécutera

 x.__len__()

si celle-ci n'existe pas, la valeur par défaut est True .

Par exemple, pour int nous pouvons définir bool comme ci-dessous :

  def __bool__(self):
      return self != 0

pour bool(100), 100 !=0 retournera True . Donc

bool(100) == True

vous pouvez facilement vérifier que bool(0) sera False . avec ceci, pour les instances de la classe int, seul 0 renverra Faux.

autre exemple= bool([1,2,3])

[1,2,3] n'a pas __bool__() définie, mais elle a __len__() et puisque sa longueur est supérieure à 0, il retournera True . Maintenant vous pouvez voir pourquoi les listes vides retournent False .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X