Comment utiliser un booléen en Python?

109

Python contient-il réellement une valeur booléenne? Je sais que tu peux faire:

checker = 1
if checker:
    #dostuff

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

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

Existe-t-il un booléen en Python? Je n'arrive pas à trouver quoi que ce soit de semblable dans la documentation.

Federer
la source
1
N'oubliez pas ... vous n'avez pas besoin de déclarer les types lors de la création d'une variable. Juste «checker = False» suffira.
Dominic Bou-Samra
10
@Dominic Bou-Samra: "vous n'avez pas besoin de déclarer les types"? Ce n'est pas tout à fait vrai. Je pense que vous devriez dire "vous ne pouvez pas déclarer un type pour une variable."
S.Lott
2
@ S.Lott "vous ne pouvez pas déclarer un type pour une variable" ... toujours pas vrai parce que vous pouvez typer some_var = int("1234")... cette ligne définit explicitement some_var=>int
Kolob Canyon

Réponses:

142
checker = None 

if some_decision:
    checker = True

if checker:
    # some stuff

[Éditer]

Pour plus d'informations: http://docs.python.org/library/functions.html#bool

Votre code fonctionne également, car il 1est converti en Truesi nécessaire. En fait, Python n'a pas eu de type booléen pendant longtemps (comme dans l'ancien C), et certains programmeurs utilisent encore des entiers au lieu de booléens.

Bastien Léonard
la source
17
Il est généralement plus simple d'utiliser checker = (some_decision) (par exemple checker = (a <b)), au lieu d'un "if".
MAK
11
cet extrait de code est un peu trompeur ... vous devez encore définir "checker" avant de le tester. Alors que OP le définit plus tôt, dans votre exemple checker = None est absolument nécessaire ou vous obtiendrez un UnboundLocalError
dprogramz
Les booléens Python sont des entiers. Trueet Falsesont des références à des intobjets étendus avec overriden __str__et __repr__.
Mad Physicist
Les booléens Python ne sont pas des entiers; 1 is not True, mais 1 == True.
BallpointBen
@BallpointBen: ce sont des entiers dans le sens commun d'être des instances du inttype, comme indiqué par isinstance(True, int).
Bastien Léonard
93

Les constructions booléennes sont en majuscules: Trueet False.

Notez également que vous pouvez faire checker = bool(some_decision)un peu de raccourci - boolne reviendra jamais que Trueou False.

Il est bon de savoir pour référence future que les classes définissant __nonzero__ou__len__ seront Trueou Falsedépendent du résultat de ces fonctions, mais le résultat booléen de pratiquement tous les autres objets le sera True(à l'exception de l' Noneobjet, des séquences vides et des zéros numériques).

Mark Rushakoff
la source
1
Merci beaucoup pour la perspicacité. Le vote populaire étant passé à l'autre réponse, j'ai attribué à Bastien la «réponse acceptée». Cependant, le vôtre a été le plus utile! :)
Federer
23
bravade: quel est l'intérêt de ne pas accepter la réponse que vous trouvez la plus utile? Ce n'est absolument pas pertinent si une autre réponse est plus votée.
tzot
2
Et le vote populaire est aussi avec cette réponse. Pensez à changer votre vote.
Alastor Moody
12

True... et Falseévidemment.

Sinon, donne la valeur NoneFalse, tout comme l'entier 0et le flottant 0.0(même si je n'utiliserais pas de flottants comme ça). En outre, des listes vides [], des tuplets ()vides et des chaînes vides ''ou ""évalués à False.

Essayez-le vous-même avec la fonction bool():

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

etc..

Terje Dahl
la source
5

Les types booléens sont définis dans la documentation:
http://docs.python.org/library/stdtypes.html#boolean-values

Cité du doc:

Les valeurs booléennes sont les deux objets constants False et True. Ils sont utilisés pour représenter des valeurs de vérité (bien que d'autres valeurs puissent également être considérées comme fausses ou vraies). Dans les contextes numériques (par exemple lorsqu'ils sont utilisés comme argument d'un opérateur arithmétique), ils se comportent comme les entiers 0 et 1, respectivement. La fonction intégrée bool () peut être utilisée pour convertir n'importe quelle valeur en booléen, si la valeur peut être interprétée comme une valeur de vérité (voir la section Test de la valeur de vérité ci-dessus).

Ils sont écrits respectivement comme Faux et Vrai.

Donc, dans le code java, supprimez les accolades, changez trueen Trueet tout ira bien :)

Anurag Uniyal
la source
4

Oui, il existe un booltype de données (qui hérite de intet n'a que deux valeurs: Trueet False).

Mais aussi Python a le boolean-ableconcept pour chaque objet, qui est utilisé lorsque la fonction bool([x])est appelée.

En savoir plus: objet. valeur non nulle et valeur booléenne des objets en python .

van
la source
x = bool (0) # false && x = bool (1) # true
Julian
0

Contrairement à Java où vous déclareriez boolean flag = True, en Python vous pouvez simplement déclarermyFlag = True

Python interpréterait cela comme une variable booléenne

codeur
la source