bool Python

Resumo : neste tutorial, você terá um conhecimento profundo da boolclasse Python e como lidar com valores booleanos de maneira eficaz.

Introdução à boolclasse Python

Para representar valores booleanosTrue , incluindo e False, Python usa a classe integrada bool.

A boolclasse é a subclasse da intclasse. Isso significa que a boolclasse herda todas as propriedades e métodos da intclasse. Além disso, a boolclasse possui comportamentos específicos relacionados às operações booleanas.

Se você usar a issubclass()função para as classes boole int, ela retornará Trueda seguinte forma:

is_child_class = issubclass(bool, int)
print(is_child_class)Linguagem de código:  PHP  ( php )

Saída:

TrueLinguagem de código:  PHP  ( php )

Na verdade, Truee Falsesão objetos singleton da boolclasse.

isinstance(True, bool)
isinstance(False, bool)Linguagem de código:  PHP  ( php )

Saída:

O seguinte usa a isinstance()função para verificar se Truee Falsesão instâncias da boolclasse:

True
True   Linguagem de código:  PHP  ( php )

Como ambos Truee Falsetambém são intobjetos, 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 Truecomo 1 e Falsecomo 0.

Observe que Truee 1 não são o mesmo objeto. Da mesma forma, Falsee 0 não são iguais.

Comparando valores booleanos

Visto que Truee Falsesão objetos singleton que sempre fazem referência aos mesmos objetos na memória ao longo do programa.

Portanto, você pode usar o operador isou ==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 Falseobjeto:

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 Trueor False.

Em Python, uma classe sempre contém uma definição de como suas instâncias são avaliadas como Truee False. Em outras palavras, todo objeto pode ser Trueou False.

Todos os objetos têm um valor booleano de True, exceto os seguintes objetos:

  • None
  • False
  • 0em 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 retornam Falseou 0.

…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 intclasse:

def __bool__(self):
    return self != 0Linguagem 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 Falseenquanto 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 ifcláusula garante que my_listnão seja Noneou 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_listfor Noneou 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:

bool Python

Resumo

  • Python usa a boolclasse para representar valores booleanos: Truee False.
  • Truee Falsesão instâncias da boolclasse. Na verdade, eles são objetos singleton da boolclasse.
  • Todo objeto possui um valor booleano, que pode ser Trueou False. O bool(object)retorna o valor booleano do obj.
  • 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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *