Artigo original: Truthy and Falsy Values in Python: A Detailed Introduction
Boas-vindas!
Neste artigo, você vai aprender:
- O que são os valores truthy e falsy.
- O que faz um valor truthy ou falsy.
- Como usar a função
bool()
para determinar se um valor é truthy ou falsy. - Como tornar objetos de classes definidas por usuário como truthy ou falsy usando o método especial
__bool __
.
Vamos começar!
🔹 Valores true x Truthy e valores Falsy
Vou apresentar para você esses conceitos comparando-os com os valores True
e False
, que são tipicamente aqueles que mais usamos.
Expressões com operandos e operadores são avaliadas como True
ou False
e podem ser usadas em uma condição if
ou while
para determinar se um bloco de código deve ser executado.
Aqui vemos um exemplo:
# Expression 5 < 3
>>> if 5 < 3:
print("True")
else:
print("False")
# Output
False
Nesse exemplo, tudo funciona como esperado porque usamos uma expressão com dois operandos e um operador 5 < 3
.
O que você acha que acontece, no entanto, se executarmos esse código?
>>> a = 5
>>> if a:
print(a)
Perceba que agora não temos uma expressão típica perto da palavra chave if
, temos apenas uma variável:

Surpreendentemente, o resultado é:
5
Se mudarmos o valor a
para zero, dessa maneira:
>>> a = 0
>>> if a:
print(a)
Não temos um resultado.
Certamente, você deve estar se perguntando nesse momento: O que fez o código ser executado com sucesso?
A variável a
não é uma expressão típica. Ela não tem operadores e operandos. Então, por que ela resulta em True
ou False
dependendo do valor?
A resposta reside no conceito de valores Truthy e Falsy, que, por si só, não são valores verdadeiros ou falsos, mas, ainda assim, são avaliados como True
ou False
.
🔸Valores Truthy e Falsy
Em Python, valores individuais podem ser avaliados como True
ou como False
. Eles não precisam necessariamente fazer parte de uma expressão maior para serem avaliados como um valor verdadeiro, pois eles já têm um valor predeterminado pelas regras da linguagem Python.
As regras básicas são:
- Valores avaliados como
False
são consideradosFalsy
. - Valores avaliados como
True
são consideradosTruthy
.
De acordo com a documentação do Python:
Qualquer objeto pode ser testado para o valor truthy, para o uso em condiçõesif
ouwhile
ou como operando das operações com booleanos abaixo (and, or, not).
🔹 Contexto booleano
Quando usamos um valor como parte de uma expressão maior ou como uma condição if
ou while
, estamos usando esse valor dentro de um contexto booleano.
Você pode pensar no contexto booleano como uma "parte" do seu código que requer que um valor seja True
ou False
para fazer sentido.
Por exemplo, (veja abaixo) a condição depois da palavra-chave if
ou depois da palavra-chave while
tem que ser avaliada como True
ou False
:

💡 Dica: o valor pode ser armazenado em uma variável. Podemos escrever o nome da variável depois das palavras-chave if
ou while
ao invés do valor em si. Isso resultará na mesma funcionalidade.
Agora que você sabe o que são valores truthy e falsy e como eles funcionam em contexto booleano, vamos ver alguns exemplos reais de valores truthy e falsy.
🔸 Valores Falsy
Sequências e coleções:
- Listas vazias
[]
- Tuplas vazias
()
- Dicionários vazios
{}
- Sets vazios
set()
- Strings vazias
""
- Ranges vazios
range(0)
Números
- Zero de qualquer tipo numérico.
- Inteiro:
0
- De ponto flutuante:
0.0
- Complexo:
0j
Constantes
None
False
Valores falsos foram a razão pela qual não houve saída em nosso exemplo inicial, quando o valor de a
era zero.
O valor 0
é falsy. Portanto, a condição if
será False
e o condicional não será executado neste exemplo:
>>> a = 0
>>> if a:
print(a)
# Sem resultado
🔹 Valores Truthy:
Segundo a documentação do Python:
Por padrão, um objeto é considerado verdadeiro.
Valores Truthy incluem:
- Sequências ou coleções não vazias (listas, tuplas, strings, dicionários, sets).
- Valores numéricos que não são zero.
True
Esse é o motivo pelo qual o valor de a
foi impresso em nosso exemplo inicial, pois seu valor foi 5 (um valor truthy):
>>> a = 5
>>> if a:
print(a)
# Resultado
5
🔸 A Função integrada bool()
Você pode verificar se um valor é truthy ou falsy com a função integrada bool()
.
De acordo com a documentação do Python, essa função:
Retorna um valor booleano, ou seja,True
ouFalse
. x (o argumento) é convertido usando o procedimento padrão de teste de verdade.

Você só precisa passar o valor como argumento, assim:
>>> bool(5)
True
>>> bool(0)
False
>>> bool([])
False
>>> bool({5, 5})
True
>>> bool(-5)
True
>>> bool(0.0)
False
>>> bool(None)
False
>>> bool(1)
True
>>> bool(range(0))
False
>>> bool(set())
False
>>> bool({5, 6, 2, 5})
True
💡 Dica: você também pode passar uma variável como argumento para testar se seu valor é truthy ou falsy.
🔹 Exemplos reais
Uma das vantagens de usar valores truthy e falsy é que eles podem ajudá-lo a tornar seu código mais conciso e legível. Aqui temos dois exemplos reais.
Exemplo:
Temos a função print_even()
, que recebe como argumento uma lista ou tupla que contém números e imprime apenas os valores que são pares. Se o argumento estiver vazio, ela imprime uma mensagem descritiva:
def print_even(data):
if len(data) > 0:
for value in data:
if value % 2 == 0:
print(value)
else:
print("O argumento não pode estar vazio")
Observe esta linha:
if len(data) > 0:
Podemos tornar a condição muito mais concisa com valores truthy e falsy:
if data:
Se a lista estiver vazia, data
será avaliado como False
. Se não estiver vazia, será avaliado como True
. Obtemos a mesma funcionalidade com código mais conciso.
Esta seria a nossa função final:
def print_even(data):
if data:
for value in data:
if value % 2 == 0:
print(value)
else:
print("The argument cannot be empty")
Exemplo:
Também podemos usar valores truthy e falsy para gerar uma exceção (erro) quando o argumento passado para uma função não for válido.
>>> def print_even(data):
if not data:
raise ValueError("O argumento não pode estar vazio")
for value in data:
if value % 2 == 0:
print(value)
Nesse caso, usando not data
como condição da declaração if
, obtemos o valor truthy oposto de data
para a condição if
.
Vamos analisar not data
em mais detalhes:
Se data
estiver vazio:
- Será um valor falsy, então
data
será avaliado comoFalse
. not data
será equivalente ànot False
, que éTrue
.- A condição será
True
. - A exceção será assinalada.
Se data
não estiver vazio:
- Será um valor truthy. Então, será avaliado como
True
. not data
será equivalente ànot True
, que éFalse
.- A condição será
False
. - A excessão não será assinalada.
🔸 Transformando objetos personalizados em valores Truthy e Falsy
Se você estiver familiarizado com classes e Programação Orientada a Objetos, você pode adicionar um método especial às suas classes para fazer seus objetos agirem como valores truthy e falsy.
__bool __()
Com o método especial __bool__()
, você pode definir uma condição "personalizada" que determinará quando um objeto de sua classe será avaliado como True
ou False
.
Segundo a documentação do Python:
Por padrão, um objeto é considerado verdadeiro, a menos que sua classe defina um método__bool__()
que retorneFalse
ou um método__len__()
que retorne zero, quando chamado com o objeto.
Por exemplo, se tivermos esta classe muito simples:
>>> class Account:
def __init__(self, balance):
self.balance = balance
Você pode ver que nenhum método especial está definido. Então, todos os objeto dessa classes que você cria sempre serão avaliados como True
:
>>> account1 = Account(500)
>>> bool(account1)
True
>>> account2 = Account(0)
>>> bool(account2)
True
Podemos personalizar esse comportamento adicionando o método especial __bool__()
:
>>> class Account:
def __init__(self, balance):
self.balance = balance
def __bool__(self):
return self.balance > 0
Agora, se o saldo da conta for maior que zero, o objeto será avaliado como True
. Caso contrário, se o saldo da conta for zero, o objeto será avaliado como False
.
>>> account1 = Account(500)
>>> bool(account1)
True
>>> account2 = Account(0)
>>> bool(account2)
False
💡 Dica: se __bool__()
não estiver definido em uma classe, mas se o método __len__()
estiver, o valor retornado por esse método determinará se o objeto é truthy ou falsy.
🔹 Em resumo
- Valores truthy são valores que são avaliados como
True
em um contexto booleano. - Valores falsy são valores que são avaliados como
False
em um contexto booleano. - Valores falsy incluem sequências vazias (listas, tuplas, strings, dicionários, sets), zero em qualquer tipo numérico,
None
eFalse
. - valores truthy incluem sequências não vazias, números (exceto
0
em qualquer tipo numérico) e, basicamente, qualquer valor que não for falsy. - Eles podem ser usados para tornar seu código mais conciso.
Eu realmente espero que você tenha gostado do artigo e o achado útil. Agora, você pode trabalhar com valores truthy e falsy em seus projetos em Python. Veja os cursos on-line da autora e siga-a no Twitter. ⭐️