Como os operadores lógicos em Python interagem com valores truthy e falsy
Na lição anterior, aprendemos sobre os operadores lógicos. Mas você se lembra que quando falamos sobre Booleanos, vimos que alguns valores são considerados como verdadeiros ou falsos para o Python, mesmo sem serem do tipo bool?
Agora vamos retomar essa ideia com mais clareza:
Os valores que vimos que são considerados como True são chamados de truthy. Lembre-se de alguns deles:
Já os valores que são considerados como False são chamados de falsy. Reveja quais são:
Existe um valor especial que ainda não vimos, o None. Ele representa a falta de um valor e é do tipo NoneType. Da mesma forma que podemos criar variáveis com strings vazias, também podemos criar variáveis sem valor nenhum atribuído usando o None:
1x = None 2 3print(x) 4print(type(x)) 5 6# Saída: 7
Não precisa se preocupar com ele agora, basta saber que ele também é considerado como falsy.
1x = None 2print(bool(x)) 3 4# Saída: 5# False
Agora que você já sabe que vários valores podem se comportar como True ou False, é importante entender como os operadores lógicos lidam com eles. O Python não converte automaticamente tudo para booleano. Na verdade, ele usa os valores truthy e falsy diretamente.
and com valores truthy e falsyO operador and retorna o primeiro valor falsy encontrado. Se todos forem truthy, retorna o último valor.
1print(0 and 5) # 0 é falsy 2print(3 and 7) # ambos são truthy 3 4# Saída:
Uma aplicação do and com valores truthy e falsy é quando queremos garantir que um arquivo existe E possui conteúdo antes de usá‑lo. Imagine que você está recebendo o nome de um arquivo e também o conteúdo dele. Só faz sentido processar o arquivo se ambos existirem:
1nome_arquivo = "relatorio.txt" # truthy 2conteudo_arquivo = "Dados do relatório" # truthy 3 4resultado = nome_arquivo and conteudo_arquivo 5print(
Se qualquer dos valores for falsy (nome vazio e/ou conteúdo vazio), o and devolve esse valor, indicando que falta algo. Se ambos forem truthy, o and devolve o último valor: o conteúdo.
or com valores truthy e falsyO operador or retorna o primeiro valor truthy encontrado. Se todos forem falsy, retorna o último.
1print("" or "Python") # string vazia é falsy 2print(0 or 5) # 0 é falsy, 5 é truthy 3 4# Saída:
Esses comportamentos tornam expressões como esta muito naturais em Python:
1nome = input("Digite seu nome: ") or "Visitante" 2print(f"Olá, {nome}!")
Aqui, se o usuário não digitar nada, input retorna uma string vazia (falsy). O operador or então devolve "Visitante". Se o usuário digitar algo, esse valor (truthy) é retornado.
not com valores truthy e falsyJá o not continua invertendo o valor booleano do que vem depois dele. Se um valor é truthy, ele vira False. Se ele é falsy, vira True:
1texto = "" 2print(not texto) # string vazia é falsy 3 4# Saída: 5# True