¿Cómo uso un booleano en Python?

109

¿Python realmente contiene un valor booleano? Sé que puedes hacer:

checker = 1
if checker:
    #dostuff

Pero soy bastante pedante y disfruto viendo booleanos en Java. Por ejemplo:

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

¿Existe algo así como un booleano en Python? Parece que no puedo encontrar nada parecido en la documentación.

Federer
fuente
1
Recuerde ... no necesita declarar tipos al crear una variable. Solo 'checker = False' será suficiente.
Dominic Bou-Samra
10
@Dominic Bou-Samra: "no es necesario declarar tipos"? Eso no es del todo cierto. Creo que debería decir "no es posible declarar un tipo para una variable".
S.Lott
2
@ S.Lott "no es posible declarar un tipo para una variable" ... aún no es cierto porque puede encasillar some_var = int("1234")... esa línea establece explícitamente some_var=>int
Kolob Canyon

Respuestas:

142
checker = None 

if some_decision:
    checker = True

if checker:
    # some stuff

[Editar]

Para obtener más información: http://docs.python.org/library/functions.html#bool

Su código también funciona, ya que 1se convierte a Truecuando es necesario. En realidad, Python no tuvo un tipo booleano durante mucho tiempo (como en la antigua C), y algunos programadores todavía usan números enteros en lugar de booleanos.

Bastien Léonard
fuente
17
Por lo general, es más sencillo utilizar checker = (some_decision) (por ejemplo, checker = (a <b)), en lugar de un 'si'.
MAK
11
este fragmento es un poco engañoso ... todavía necesita definir "verificador" antes de probarlo. Mientras que OP lo define anteriormente, en su ejemplo checker = None es absolutamente necesario o obtendrá un UnboundLocalError
dprogramz
Los valores booleanos de Python son números enteros. Truey Falseson referencias a intobjetos extendidos con invalidación __str__y __repr__.
Mad Physicist
Los booleanos de Python no son números enteros; 1 is not True, pero 1 == True.
BallpointBen
@BallpointBen: son números enteros en el sentido común de ser instancias del inttipo, como lo muestra isinstance(True, int).
Bastien Léonard
93

Los builtins booleanos están en mayúscula: Truey False.

Tenga en cuenta también que puede hacer checker = bool(some_decision)una pequeña taquigrafía: boolsolo volverá Trueo False.

Es bueno saber para referencia futura que las clases__nonzero____len__ que definen o serán Trueo Falsedependerán del resultado de esas funciones, pero prácticamente el resultado booleano de todos los demás objetos será True(excepto el Noneobjeto, las secuencias vacías y los ceros numéricos).

Mark Rushakoff
fuente
1
Muchas gracias por la información. Como el voto popular se ha inclinado hacia la otra respuesta, le otorgué a Bastien la 'Respuesta Aceptada'. ¡Sin embargo, el tuyo fue de gran ayuda! :)
Federer
23
bravuconería: ¿de qué sirve no aceptar la respuesta que te resulta más útil? Es totalmente irrelevante si se vota más a favor de otra respuesta.
tzot
2
Y el voto popular también está con esta respuesta. Considere cambiar su voto.
Alastor Moody
12

True... y Falseobviamente.

De lo contrario, se Noneevalúa como Falso, al igual que el entero 0y también el flotante 0.0(aunque yo no usaría flotantes como ese). Además, listas vacías [], grupos irregulares ()vacíos y cadenas vacías ''o ""evaluar como Falso.

Pruébelo usted mismo con la función 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
fuente
5

Los tipos booleanos se definen en la documentación:
http://docs.python.org/library/stdtypes.html#boolean-values

Citado del doc:

Los valores booleanos son los dos objetos constantes Falso y Verdadero. Se utilizan para representar valores de verdad (aunque otros valores también pueden considerarse falsos o verdaderos). En contextos numéricos (por ejemplo, cuando se utilizan como argumento para un operador aritmético), se comportan como los enteros 0 y 1, respectivamente. La función incorporada bool () se puede usar para convertir cualquier valor a un booleano, si el valor se puede interpretar como un valor de verdad (consulte la sección Prueba de valor de verdad más arriba).

Están escritos como Falso y Verdadero, respectivamente.

Entonces, en el código java, elimine las llaves, cambie truea Truey estará bien :)

Anurag Uniyal
fuente
4

Sí, hay un booltipo de datos (que hereda inty tiene solo dos valores: Truey False).

Pero también Python tiene el boolean-ableconcepto para cada objeto, que se usa cuando bool([x])se llama a la función .

Ver más: objeto. distinto de cero y valor-booleano-de-objetos-en-python .

camioneta
fuente
x = bool (0) # falso && x = bool (1) # verdadero
Juliano
0

A diferencia de Java, donde declararías boolean flag = True, en Python puedes simplemente declararmyFlag = True

Python interpretaría esto como una variable booleana

descifrador
fuente