Como faço para usar um booleano em Python?


109

Python realmente contém um valor booleano? Eu sei que você pode fazer:

checker = 1
if checker:
    #dostuff

Mas sou bastante pedante e gosto de ver booleanos em Java. Por exemplo:

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

Existe um booleano em Python? Não consigo encontrar nada parecido na documentação.


1
Lembre-se ... você não precisa declarar tipos ao criar uma variável. Apenas 'checker = False' será suficiente.
Dominic Bou-Samra

10
@Dominic Bou-Samra: "você não precisa declarar tipos"? Isso não é bem verdade. Eu acho que você deveria dizer "você não pode declarar um tipo para uma variável."
S.Lott

2
@ S.Lott "você não pode declarar um tipo para uma variável" ... ainda não é verdade porque você pode typecast some_var = int("1234")... essa linha define explicitamente some_var=>int
Kolob Canyon

Respostas:


142
checker = None 

if some_decision:
    checker = True

if checker:
    # some stuff

[Editar]

Para obter mais informações: http://docs.python.org/library/functions.html#bool

Seu código também funciona, pois 1é convertido para Truequando necessário. Na verdade, Python não teve um tipo booleano por muito tempo (como no antigo C), e alguns programadores ainda usam inteiros em vez de booleanos.


17
Geralmente é mais simples usar verificador = (alguma_decisão) (por exemplo, verificador = (a <b)), em vez de um 'se'.
MAK

11
este trecho é um pouco enganador ... você ainda precisa definir "verificador" antes de testá-lo. Embora OP o defina anteriormente, em seu exemplo, checker = None é absolutamente necessário ou você obterá um UnboundLocalError
dprogramz

Os booleanos do Python são inteiros. Truee Falsesão referências a intobjetos estendidos com __str__e sobrescritos __repr__.
Mad Physicist

Os booleanos do Python não são inteiros; 1 is not True, mas 1 == True.
BallpointBen

@BallpointBen: são inteiros no sentido comum de serem instâncias do inttipo, conforme mostrado por isinstance(True, int).
Bastien Léonard

93

Os booleanos embutidos são capitalizados: Truee False.

Observe também que você pode fazer checker = bool(some_decision)uma pequena abreviação - boolsó retornará Trueou False.

É bom saber para referência futura que as classes__nonzero____len__ que definem ou serão Trueou Falsedependendo do resultado dessas funções, mas virtualmente todos os outros resultados booleanos do objeto serão True(exceto para o Noneobjeto, sequências vazias e zeros numéricos).


1
Muito obrigado pelo insight. Como o voto popular mudou para a outra resposta, conceda a Bastien a 'Resposta Aceita'. No entanto, o seu foi muito útil! :)
Federer

23
bravado: de que adianta não aceitar a resposta que você considera mais útil? É totalmente irrelevante se outra resposta tiver mais votos positivos.
tzot

2
E o voto popular também está com essa resposta. Considere mudar seu voto.
Alastor Moody

12

True... e Falseobviamente.

Caso contrário, é Noneavaliado como False, assim como o inteiro 0e também o float 0.0(embora eu não usasse floats assim). Além disso, listas vazias [], tuplets ()vazios e strings vazias ''ou ""avaliadas como False.

Experimente você mesmo com a função bool():

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

etc ..


5

Os tipos booleanos são definidos na documentação:
http://docs.python.org/library/stdtypes.html#boolean-values

Citado do doc:

Os valores booleanos são os dois objetos constantes, False e True. Eles são usados ​​para representar valores verdadeiros (embora outros valores também possam ser considerados falsos ou verdadeiros). Em contextos numéricos (por exemplo, quando usados ​​como argumento para um operador aritmético), eles se comportam como os inteiros 0 e 1, respectivamente. A função embutida bool () pode ser usada para converter qualquer valor para um booleano, se o valor puder ser interpretado como um valor verdade (consulte a seção Teste de valor verdade acima).

Eles são escritos como False e True, respectivamente.

Portanto, no código java, remova os colchetes, mude truepara Truee você ficará bem :)



0

Ao contrário de Java, onde você declararia boolean flag = True, em Python você pode simplesmente declararmyFlag = True

Python interpretaria isso como uma variável booleana

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.