Resumo : neste tutorial, você aprenderá sobre o and
operador lógico Python e como usá-lo para controlar o fluxo de código.
Introdução ao and
operador Python
and
O operador Python é um operador lógico . Normalmente, você usa o and
operador para operar com valores booleanos e retornar um valor booleano .
O and
operador retorna True
se ambos os operandos forem avaliados como True
. Caso contrário, ele retorna False
.
A tabela verdade a seguir mostra o resultado do and
operador:
X | S | X e Y |
---|---|---|
Verdadeiro | Verdadeiro | Verdadeiro |
Verdadeiro | Falso | Falso |
Falso | Falso | Falso |
Falso | Verdadeiro | Falso |
Esta tabela ilustra dois pontos importantes:
- Se o primeiro operando (
X
) forTrue
, o resultado doand
operador depende do resultado do segundo operando (Y
). - Se o primeiro operando (
X
) forFalse
, o resultado doand
operador será sempreFalse
independente do valor do segundo operando (Y
).
O seguinte mostra um exemplo de uso do and
operador:
timeout = False
pending_job = True
execute_next = timeout and pending_job
print(execute_next)
Linguagem de código: Python ( python )
Saída:
False
Linguagem de código: Python ( python )
Neste exemplo, o timeout
is False
e pending_job
is True
. Portanto, o resultado da expressão timeout and pending_job
é False
.
Operador Python and
está em curto-circuito
A principal característica do and
operador é que ele entra em curto-circuito. Isso significa que se o primeiro operando for False
, o and
operador não avaliará o segundo operando. A razão é que já tem uma conclusão sobre o resultado, que é False
.
O exemplo a seguir resulta em ZeroDivisionError
:
a = 10
b = 0
c = a / b
print(c)
Linguagem de código: Python ( python )
Neste exemplo, como b
é zero, a / b
definitivamente causa a exceção de divisão por zero.
No entanto, o exemplo a seguir não causará ZeroDivisionError
:
a = 10
b = 0
c = b and a/b
print(c)
Linguagem de código: Python ( python )
Saída:
0
Linguagem de código: Python ( python )
Neste exemplo, usamos o and
operador na expressão:
c = b and a/b
Linguagem de código: Python ( python )
Como b
é zero, ou seja False
, o and
operador pode concluir o resultado de toda a expressão, independente False
do resultado da segunda parte a / b
. Portanto, o and
operador não precisa avaliar a expressão a / b
. Na verdade, isso não acontece.
O exemplo a seguir altera o valor de b
para cinco:
a = 10
b = 5
c = b and a/b
print(c)
Linguagem de código: Python ( python )
Saída:
2.0
Linguagem de código: Python ( python )
Neste exemplo, b
é 5
qual é True
. Como o primeiro operando é True
, o valor de toda a expressão depende do valor do segundo operando, que é a / b
.
Esses exemplos mostram que o and
operador pode operar com valores não booleanos e retornar um valor booleano sem valor.
Em geral, você pode usar o and
operador para os objetos:
bool(object1) and bool(object2)
Linguagem de código: Python ( python )
Na verdade, você não precisa usar o bool()
construtor:
object1 and object2
Linguagem de código: Python ( python )
Neste caso, o and
operador retorna se object1
for falso. Caso contrário, ele retorna o object2
.
Em outras palavras, o and
operador retorna the object1
se the object1
for falso. Caso contrário, ele avalia object2
e retorna.
A expressão
c = b and a/b
Linguagem de código: Python ( python )
é equivalente ao seguinte:
if b:
c = a / b
else:
c = b
Linguagem de código: Python ( python )
Usando o and
operador, você pode controlar o fluxo do programa.
and
Exemplo de operador Python
O seguinte define a avg()
função que calcula a média dos números:
def avg(*numbers):
total = sum(numbers)
n = len(numbers)
if n > 0:
return total / n
return 0
if __name__ == "__main__":
print(avg(1, 2, 3))
Linguagem de código: Python ( python )
Saída:
2
Linguagem de código: Python ( python )
Como funciona.
- Primeiro, calcule a soma dos números usando a
sum()
função. - Em segundo lugar, obtenha os números numéricos usando a
len()
função. - Terceiro, retorne a média se o número de números for maior que zero; caso contrário, retorne zero.
O bloco principal calcula a média de três números 1, 2 e 3, que retorna 2,0 conforme o esperado.
O código a seguir usa uma if
instrução e retorna a média se o número de números for maior que zero. Caso contrário, retorna zero:
if n > 0:
return total / n
return 0
Linguagem de código: Python ( python )
Na verdade, você pode usar o operador and para tornar este código mais conciso assim:
return n and total / n
Linguagem de código: Python ( python )
Neste caso, if n
for zero o operador and não precisa avaliar a expressão total / n
e retorna zero. Caso contrário, ele avalia total / n
e retorna.
Aqui está a nova versão da avg()
função que usa o and
operador:
def avg(*numbers):
total = sum(numbers)
n = len(numbers)
return n and total / n
Linguagem de código: Python ( python )
Resumo
- Os
X and Y
retornosTrue
são ambosX
eY
avaliados comoTrue
. Caso contrário, ele retornaFalse
. - Na
X and Y
verdade, retornaX
ifX
é falso. Caso contrário, avaliaY
e retorna o resultado da avaliação.