post

Python pt-br:Operadores e Expressoes

Contents

Introdução

A maioria das instruções (linhas lógicas) que você escreverá irão conter expressões. Um exemplo simples de expressão é 2 + 3. Uma expressão pode ser divida em operadores e operandos.

Operadores definem que operação será realizada e podem ser representados por símbolos como + ou por palavras-chave especiais. Operadores requerem dados para funcionar e tais dados são chamados operandos. Neste caso, 2 e 3 são os operandos.

Operadores

Iremos dar uma breve olhada nos operadores e sua utilização:

Perceba que você pode testar as espressões dadas nos exemplos usando o interpretador interativo. Por exemplo, para testar a expressão 2 + 3, use o interpretador interativo do Python:

>>> 2 + 3
5
>>> 3 * 5
15
>>>
Operadores e sua utilização

Operador

Nome

Explicação

Exemplos

+

Adição

Soma dois objetos

3 + 5 retorna 8. 'a' + 'b' retorna 'ab'.

Subtração

Torna um número negativo ou a subtração de um número por outro

-5.2 retorna um número negativo. 50 - 24 retorna 26.

*

Multiplicação

Retorna o produto de dois números ou uma string repetida uma certa quantidade de vezes.

2 * 3 retorna 6. 'la' * 3 retorna 'lalala'.

**

Potência

Retorna x elevado à potência de y

3 ** 4 retorna 81 (i.e. 3 * 3 * 3 * 3)

/

Divisão

Divide x por y

4 / 3 retorna 1.3333333333333333.

//

Divisão Inteira

Retorna a parte inteira do quociente

4 // 3 retorna 1.

%

Modulo

Retorna o resto da divisão

8% 3 retorna 2. -25.5% 2.25 retorna 1.5.

<<

Deslocamento de bits à esquerda

Desloca os bits do número para a esquerda pelo número de bits especificado. (Cada número é representado na memória por bits ou digitos binários i.e. 0 and 1)

2 << 2 retorna 8. 2 é representado por 10 em bits. Deslocando os bits do número à esquerda por 2 bits retorna 1000, que representa o número decimal 8.

>>

Deslocamento de bits à direita

Desloca os bits do número para a direita pelo número de bits especificado.

11 >> 1 retorna 5. 11 é representado em bits por 1011 que quando os bits são deslocados para a direita por 1 bit retorna 101, que é o número decimal 5.

&

Operador bit a bit AND

Bits configurados nos dois operadores são configurados no resultado

5 & 3 retorna 1.

|

Operador bit a bit OR

Bits configurados em um ou outro operador são configurados no resultado

5 | 3 retorna 7

^

Operador bit a bit XOR

Bits configurados em um ou outro operador, mas não em ambos, são configurados no resultado

5 ^ 3 retorna 6

~

Operador bit a bit NOT

Bits configurados no operador não são configurados no resultado e vice-versa.

~5 retorna -6.

<

Menor que

Retorna se x é menor que y. Todos os operadores de comparção retornam True(verdadeiro) ou False(falso). Note a capitalização dos nomes.

5 < 3 retorna False e 3 < 5 retorna True.

Comparações podem ser encadeadas arbitrariamente: 3 < 5 < 7 retorna True.

>

Maior que

Retorna se x é maior que y

5 > 3 retorna True. Se os dois operadores forem números, eles são antes convertidos a um tipo comum. De outra maneira, será sempre retornado False.

<=

Menor ou igual a

Retorna se x é menor ou igual a y

x = 3; y = 6; x <= y retorna True.

>=

Maior ou igual a

Retorna se x é maior ou igual a y

x = 4; y = 3; x >= 3 retorna True.

==

Igual a

Compara se os objetos são iguais

x = 2; y = 2; x == y retorna True.

x = 'str'; y = 'stR'; x == y retorna False.

x = 'str'; y = 'str'; x == y retorna True.

!=

Diferente de

Compara se os objetos são diferentes

x = 2; y = 3; x!= y retorna True.

not

Operador booleano NOT

Se x é True, ele retorna False. Se x é False, ele retorna True.

x = True; not y retorna False.

and

Operador booleano AND

x and y retorna False se x é False, senão ele retorna a avaliação de y

x = False; y = True; x and y retorna False desde que x seja False. Neste caso, Python não irá avaliar y desde que ele saiba que o lado esquerdo da espressão ‘and’ é False o que implica que toda a espressão será False independente do outro valor. isso é chamado short-circuit evaluation.

or

Operador booleano OR

Se x é True, ele retorna True, senão ele retorna a avaliação de y

x = True; y = False; x or y retorna True. A Short-circuit evaluation se aplica aqui também.

Precendência de Operadores

Se você tem uma expressão como 2 + 3 * 4, será realizada primeiro a adição ou a multiplicação? A matemática do nosso ensino médio nos diz que a multiplicação deve ser realizada primeiro. Isso significa que o operador de multiplicação possui maior precedência que o operador de adição.

A tabela a seguir nos dá a ordem de precedência de operadores para o Python, do de menor precedência (least binding) ao de maior precedência (most binding). Isto significa que em uma dada expressão, Python irá primeiramente avaliar os operadores listados na base da tabela antes dos operadores listados ao topo.

A tabela a seguir (tirada de Manual de referência Python) é proporcionada visando maior entendimento. É muito melhor usar parênteses para agrupar operadores e operandos apropriadamente de maneira que fique clara a precedência. Isso torna o programa mais legível. Veja #Ordem de Avaliação abaixo para detalhes.

Precedência de Operadores

Operador

Descrição

lambda

Expressão Lambda

or

Operador Booleano OR

and

Operador Booleano AND

not x

Operador Booleano NOT

in, not in

Testes de membros/existência

is, is not

Testes de identidade

<, <=, >, >=,!=, ==

Comparações

|

Operador bit-a-bit OR

^

Operador bit-a-bit XOR

&

Operador bit-a-bit AND

<<, >>

Deslocamentos de bits

+, –

Adição e subtração

*, /, //, %

Multiplicação, Divisão, Divisão inteira e Resto

+x, -x

Positivo, Negativo

~x

Operador bit-a-bit NOT

**

Exponenciação

x.atributo

Referencia a atributo

x[índice]

Subscrição

x[índice1:índice2]

Repartição

f(argumentos …)

Chamada de função

(expressões, …)

Uniao ou exibição de tupla

[expressões, …]

Exibição de listas

{chave:dado, …}

Exibição de dicionário

Os operadores que ainda não vimos serão explicados em capítulos posteriores.

Operadores com a mesma precedência são listados na mesma linha na tabela acima. Por exemplo, + e - possuem a mesma precedência.

Ordem de avaliação

Por padrão, a tabela de precedência dos operadores decide que operadores são avaliados primeiro.

Para tornar uma expressão mais legível podemos usar parênteses. Por exemplo, 2 + (3 * 4) é, definitivamente, mais fácil de entender que 2 + 3 * 4 que requer conhecimento da ordem de precedência dos operadores. Assim como todo o resto, parênteses devem ser usados conscientemente (não sobrecarregue) e não devem ser redundantes (como em 2 + (3 + 4)).

Se você quer mudar a ordem em que eles são avaliados, você pode, novamente, usar parênteses. Por exemplo, se você quer que a adição seja realizada antes da multiplicação em uma expressão, então você pode escrever algo como (2 + 3) * 4.

Associatividade

Operadores são, geralmente, associados da esquerda para a direita, isto é, operadores com a mesma procedência são avaliados da esquerda para a direita. Por exemplo, 2 + 3 + 4 é avaliado como (2 + 3) + 4. Alguns operadores, como os de atribuição, possuem a associatividade da direira para a esquerda, isto é, a = b = c é tratado como a = (b = c).

Expressões

Usando Expressões

Exemplo:

#!/usr/bin/python
# Nome do Arquivo: expressao.py

length = 5
breadth = 2

area = length * breadth
print('Área é', area)
print('Perímetro é', 2 * (length + breadth))

Saída:

   $ python expressao.py
   Área é 10
   Perimetro é 14

Como Funciona:

O tamanho e amplitude do retângulo são armazenados nas variáveis length e breadth. Nós os utilizamos para calcular a área e o perímetro do retângulo com a ajuda de expressões. Armazenamos o resultado da expressão length * breadth na variável area e então o imprimimos usando a função print. No segundo caso, usamos o valor da expressão 2 * (length + breadth) diretamente na função print.

Perceba, também, como o Python faz a ‘impressão elegante’ (pretty-print) da saída. Mesmo que não tenhamos especificao um espaço entre 'Área é' e a variável area, Python coloca-o para nós de uma maneira que tenhamos uma saída limpa e bonita, e o programa é muito mais legível dessa maneira (desde que não tenhamos que nos preocupar com espaçamento na string que utilizamos para a saída). Isto é um exemplo de como o Python torna mais fácil a vida do programador.

Sumário

Vimos como utilizar operadores, operandos e expressões – estes são os blocos de construção básicos de qualquer programa. A seguir, veremos como fazer uso deles em nossos programas através de indicação.


Advertisements