About
Swaroop C H is 26 years of age. He graduated in B.E. (Computer Science) from PESIT, Bangalore, India. He has previously worked at Yahoo! and Adobe.
Page
Support
Personal tools
Collection
Python pt-br:Operadores e Expressoes
From Notes
Contents |
[edit] 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.
[edit] 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 >>>
|
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. |
[edit] 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.
|
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.
[edit] 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.
[edit] 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).
[edit] Expressões
[edit] 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.
[edit] 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.
Please add your comments by clicking on the 'Discussion' link in the left sidebar.