Resumo : neste tutorial, você terá um conhecimento profundo da bool
classe Python e como lidar com valores booleanos de maneira eficaz.
Introdução à bool
classe Python
Para representar valores booleanosTrue
, incluindo e False
, Python usa a classe integrada bool
.
A bool
classe é a subclasse da int
classe. Isso significa que a bool
classe herda todas as propriedades e métodos da int
classe. Além disso, a bool
classe possui comportamentos específicos relacionados às operações booleanas.
Se você usar a issubclass()
função para as classes bool
e int
, ela retornará True
da seguinte forma:
is_child_class = issubclass(bool, int)
print(is_child_class)
Linguagem de código: PHP ( php )
Saída:
True
Linguagem de código: PHP ( php )
Na verdade, True
e False
são objetos singleton da bool
classe.
isinstance(True, bool)
isinstance(False, bool)
Linguagem de código: PHP ( php )
Saída:
O seguinte usa a isinstance()
função para verificar se True
e False
são instâncias da bool
classe:
True
True
Linguagem de código: PHP ( php )
Como ambos True
e False
também são int
objetos, você pode convertê-los em números inteiros:
true_value = int(True)
print(true_value)
false_value = int(False)
print(false_value)
Linguagem de código: PHP ( php )
Saída:
1
0
Como você pode ver, Python interpreta True
como 1 e False
como 0.
Observe que True
e 1 não são o mesmo objeto. Da mesma forma, False
e 0 não são iguais.
Comparando valores booleanos
Visto que True
e False
são objetos singleton que sempre fazem referência aos mesmos objetos na memória ao longo do programa.
Portanto, você pode usar o operador is
ou ==
para comparar valores booleanos. Os resultados são os mesmos. Por exemplo:
a = True
b = True
print(a == b)
print(a is b)
Linguagem de código: PHP ( php )
Saída:
True
True
Linguagem de código: PHP ( php )
O mesmo se aplica ao False
objeto:
a = False
b = False
print(a == b)
print(a is b)
Linguagem de código: PHP ( php )
Saída:
True
True
Linguagem de código: PHP ( php )
Como o construtor Python bool() funciona nos bastidores
O construtor booleano bool()
aceita um objeto e retorna True
or False
.
Em Python, uma classe sempre contém uma definição de como suas instâncias são avaliadas como True
e False
. Em outras palavras, todo objeto pode ser True
ou False
.
Todos os objetos têm um valor booleano de True
, exceto os seguintes objetos:
None
False
0
em qualquer tipo numérico, como inteiro, flutuante e decimal.- Sequências vazias, por exemplo, lista, tupla, string.
- Tipos de mapeamento vazios, por exemplo, dicionário, conjunto.
- Classes personalizadas que implementam métodos
__bool__()
or__len__()
que retornamFalse
ou0
.
…que têm um valor booleano deFalse
O método __bool__()
Quando você passa um objeto para o bool()
construtor, Python retorna o valor do __bool__()
método desse objeto.
Por exemplo, o seguinte mostra o __bool__()
método da int
classe:
def __bool__(self):
return self != 0
Linguagem de código: PHP ( php )
Quando Você ligar:
bool(200)
…Python realmente executa:
200.__bool__()
Linguagem de código: CSS ( css )
…e, portanto, retorna o resultado de 200 != 0
, que é True
.
No entanto, se você ligar:
bool(0)
…Python executa:
0.__bool__()
Linguagem de código: CSS ( css )
…e, portanto, retorna o resultado de 0 != 0
, que é False
.
O método __len__()
Se a classe do objeto não possuir o __bool__()
método, Python retornará o resultado do __len__()
método.
Se o resultado do __len__()
método for zero, o bool()
retorno False
é . Caso contrário, ele retorna True
.
É por isso que uma lista vazia é sempre False
enquanto uma lista com pelo menos um elemento é True
.
Suponha que você tenha uma função que retorne uma lista ou None
. A lista de resultados pode ter zero ou mais elementos:
def get_list():
# ...
Linguagem de código: PHP ( php )
Para exibir os elementos da lista, você pode criar o seguinte código:
my_list = get_list()
if my_list is not None and len(my_list) > 0:
for element in my_list:
print(element)
else:
print('List is None or empty')
Linguagem de código: PHP ( php )
A condição na if
cláusula garante que my_list
não seja None
ou empty
.
No entanto, esta condição é desnecessária porque você pode encurtá-la desta forma. O código funciona da mesma forma:
my_list = get_list()
if my_list:
for element in my_list:
print(element)
else:
print('List is None or empty')
Linguagem de código: PHP ( php )
Nesse caso, se my_list
for None
ou estiver vazio, o Python o avaliará como False
.
Finalmente, se uma classe não tiver métodos __bool__()
e __len__()
, as instâncias dessa classe sempre serão avaliadas como True
.
O fluxograma a seguir ilustra como bool()
funciona:
Resumo
- Python usa a
bool
classe para representar valores booleanos:True
eFalse
. True
eFalse
são instâncias dabool
classe. Na verdade, eles são objetos singleton dabool
classe.- Todo objeto possui um valor booleano, que pode ser
True
ouFalse
. Obool(object)
retorna o valor booleano doobj
. - Nos bastidores, ele
bool()
retorna um valor booleano chamando o método__bool__()
ou__len__()
do objeto. Se ambos os métodos não existirem, bool() retornaráTrue
.