8 Erros de Programação Comuns no Python

Propaganda
Começando a Programar
em Python Para Leigos
a
Folh la
o
de C
Python é uma linguagem de programação incrível e flexível que tem um significante
apoio de terceiros e é usada em uma farta área de aplicações. As aplicações que
você construir rodarão em qualquer plataforma que dê suporte ao Python sem qualquer
modificação desde que você crie uma solução usando somente o Python. É claro que
você gostaria de garantir que as suas aplicações tivessem a melhor chance possível de
funcionar exatamente como você esperaria onde quer que elas rodem e é por isso que
você precisa destas informações nesta Folha de Cola.
8 Erros de Programação Comuns no Python
Todo desenvolvedor no planeta comete algum erro. Entretanto, conhecer alguns
erros comuns poderá economizar seu tempo e esforço posteriormente. A lista
seguinte apresenta os erros mais comuns que os desenvolvedores vivenciam ao
trabalhar com o Python.
• Usando a indentação incorreta: Muitas funcionalidades do Python baseiam-se em
indentação. Por exemplo, quando você cria uma nova classe, tudo naquela classe é
indentado em baixo da declaração da classe. O mesmo ocorre para a decisão, o loop
e outras declarações de estruturas. Se você achar que seu código está executando
uma tarefa quando não deveria, comece a rever a indentação que você está usando.
• Baseando-se no operador de atribuição, em vez do operador de igualdade: Ao
executar uma comparação entre dois objetos ou valores, você somente deve usar o
operador de igualdade (==), não o operador de atribuição (=). O operador de atribuição
coloca um objeto ou um valor em uma variável e não compara com nada.
• Colocando a função chamadora na ordem errada ao criar declarações complexas:
o Python sempre executa funções da esquerda para a direita. Então, a declaração
MyString.strip().center(21, “*”), produz um resultado diferente do
que MyString.center(21, “*”). strip(). Quando você encontrar uma
situação em que a saída da série de funções concatenadas é diferente daquela que
estava esperando, você precisa verificar a ordem das funções para garantir que cada
função esteja no lugar certo.
• Pontuação posicionada incorretamente: É possível colocar a pontuação no local
errado e criar um resultado completamente diferente. Lembre-se de que você deve
incluir dois pontos no final de cada declaração de estrutura. Além disso, a colocação
dos parênteses é crítica. Por exemplo,
(1 + 2) * (3 + 4), 1 + ((2 * 3) + 4), e
1 + (2 * (3 + 4)) produzem resultados diferentes.
Para Leigos: A série de livros para iniciantes que mais vende no mundo.
Começando a Programar
em Python Para Leigos
a
Folh la
o
de C
• Usando o operador lógico incorreto: A maioria dos operadores não apresenta
problemas, mas os operadores lógicos podem apresentar. Lembre-se de usar and
para determinar quando ambos os operandos devem ser True e or quando um dos
operandos pode ser True.
• Criando erros, com incremento de um, em loops: Lembre-se de que um loop não
conta o último número que você especificou em uma faixa de números. Então, se você
especificar a faixa [1:11], na verdade, você obtém saída com valores entre 1 e 10.
• Usando a capitalização errada: Python distingue entre caixas alta e baixa, então
MyVar é diferente de myvar e de MYVAR. Sempre verifique a capitalização quando
você perceber que não consegue acessar um valor que você esperava acessar.
• Cometendo um erro de ortografia: Mesmo os desenvolvedores experientes
sofrem com erros de ortografia algumas vezes. Garantir que você use uma mesma
abordagem para nomear as variáveis, classes e funções ajuda bastante. No entanto,
mesmo um esquema de nomenclatura bem consistente nem sempre vai prevenir que
você digite MyVer quando você gostaria de ter digitado MyVar.
Operadores utilizados regularmente
com o Python
É importante saber quais operadores o Python suporta, e lembrar de todos eles
não é sempre fácil. A tabela seguinte fornece um rápido resumo dos operadores
regularmente usados com o Python.
Operador Tipo
Descrição
Exemplo
−
Aritmético
Subtrai o operando da direita do
operando da esquerda.
5−2=3
−
Unário
Nega o valor original, de modo que
positivo se torna negativo e vice-versa.
−(−4) resulta em 4
enquanto −4 resulta
em −4
−=
Atribuição
!=
Relacional
Subtrai o valor encontrado no operando da MyVar -= 2 resulta em
direita do valor encontrado no operando da MyVar contendo 3
esquerda e coloca o resultado no operando
da esquerda.
Determina se dois valores não são iguais. 1 != 2 é verdadeiro
Algumas versões mais antigas do Python
permitiriam que você usasse o operador
<> no lugar do operador !=. Usar o
operador <> resulta em um erro nas
versões atuais do Python.
Para Leigos: A série de livros para iniciantes que mais vende no mundo.
Começando a Programar
em Python Para Leigos
%
Aritmético
%=
Atribuição
& (E)
Bitwise
*
Aritmético
**
Aritmético
**=
Atribuição
*=
Atribuição
/
Aritmético
//
Aritmético
//=
Atribuição
Divide o operando da esquerda
pelo operando da direita e retorna
o resto.
Divide o valor encontrado no
operando da esquerda pelo
valor encontrado no operando
da direita e coloca o resto no
operando da esquerda.
Determina se dois bits individuais
dentro de dois operadores
são verdadeiros e definem o
bit resultante para verdadeiro
quando eles são.
Multiplica o operando da direita
pelo operando da esquerda.
Calcula o valor exponencial
do operando da direita pelo
operando da esquerda.
Determina o valor exponencial
encontrado no operando da
esquerda quando elevado à
potência do valor encontrado
no operando da direita e coloca
o resultado no operando da
esquerda.
Multiplica o valor encontrado no
operando da direita pelo valor
encontrado no operando da
esquerda e coloca o resultado no
operando da esquerda.
Divide o operando da esquerda
pelo operando da direita.
Executa divisão inteira, na qual o
operando da esquerda é dividido
pelo operando da direita e apenas
o número inteiro é devolvido
(também chamado de floor
division).
Divide o valor encontrado no
operando da esquerda pelo valor
encontrado no operando da
direita e coloca o resultado inteiro
(número inteiro) no operando da
esquerda.
a
Folh la
o
de C
5%2=1
MyVar %= 2 resulta em
MyVar contendo 1
0b1100 & 0b0110 =
0b0100
5 * 2 = 10
5 ** 2 = 25
MyVar ** 2 resulta em
MyVar contendo 25
MyVar *= 2 resulta em
MyVar contendo 10
5 / 2 = 2,5
5 // 2 = 2
MyVar //= 2 resulta
em MyVar contendo 2
Para Leigos: A série de livros para iniciantes que mais vende no mundo.
Começando a Programar
em Python Para Leigos
/=
Atribuição
^ (Ou exclusivo) Bitwise
| (Ou)
Bitwise
~
Unário
~
Bitwise
+
+
Aritmético
Unário
+=
Atribuição
<
Relacional
<<
Bitwise
(deslocamento
para a esquerda)
<=
Relacional
Divide o valor encontrado no
operando da esquerda pelo valor
encontrado no operando da
direita e coloca o resultado no
operando da esquerda.
Determina se apenas um dos
bits individuais dentro de dois
operadores são verdadeiros e
definem o bit resultante para
verdadeiro quando eles são.
Quando ambos os bits são
verdadeiros, ou ambos os bits são
falsos, o resultado é falso.
Determina se um dos bits
individuais dentro de dois
operadores são verdadeiros
e define o bit resultante para
verdadeiro quando eles são.
Inverte os bits de um número
de modo que todos os bits 0 se
tornam bits 1 e vice-versa.
Calcula o valor do complemento
de um número.
Adiciona dois valores.
Fornecido somente para que fique
completo. Este operador retorna
o mesmo valor que você fornecer
como entrada.
Adiciona o valor encontrado
no operando da direita ao valor
encontrado no operando da
esquerda e coloca o resultado no
operando da esquerda.
Verifica se o valor do operando da
esquerda é menor que o valor do
operando da direita.
Alterna os bits do operando da
esquerda pelo valor do operando
da direita. Todos os novos bits
são definidos para 0 e todos
os bits que fluem para fora da
extremidade são perdidos.
Verifica se o valor operando da
esquerda é menor ou igual ao
valor do operando da direita.
a
Folh la
o
de C
MyVar /= 2 resulta em
MyVar contendo 2,5
0b1100 ^ 0b0110 =
0b1010
0b1100 | 0b0110 =
0b1110
~4 resulta em um valor
de −5
~0b1100 = −0b1101
~0b0110 = −0b0111
5+2=7
+4 resulta em um valor
de 4
MyVar += 2 resulta em
MyVar contendo 7
1 < 2 é True
0b00110011 << 2 =
0b11001100
1 <= 2 é True
Para Leigos: A série de livros para iniciantes que mais vende no mundo.
Começando a Programar
em Python Para Leigos
=
Atribuição
==
Relacional
>
Relacional
>=
Relacional
>>
(deslocamento
para a direita)
Bitwise
and
Lógico
Atribui o valor encontrado no
operando da direita ao operando
da esquerda.
Determina se os dois valores são
iguais. Observe que o operador
relacional usa dois sinais de
igual. Um erro que muitos
desenvolvedores cometem é
usar apenas um sinal de igual, o
que resulta em um valor que está
sendo atribuído a outro.
Verifica se o valor do operando
da esquerda é maior que o valor
do operando da direita.
Verifica se o valor do operando
da esquerda é maior ou igual ao
valor do operando da direita.
Desloca os bits no operando da
esquerda para a direita pelo valor
do operando da direita. Todos os
novos bits são definidos para 0 e
todos os bits que fluem para fora
da extremidade são perdidos.
Determina se os dois operandos
são verdadeiros.
a
Folh la
o
de C
MyVar = 2 resulta
em MyVar contendo 2
1 == 2 é False
1 > 2 é False
1 >= 2 é False
0b00110011 >> 2
= 0b00001100
True and True is True
True and False is False
False and True is False
in
Membro
is
Identidade
is not
Identidade
Determina se o valor do
operando da esquerda aparece
na sequência encontrada no
operando da direita.
Avalia em verdadeiro quando
o tipo de valor ou expressão no
operando da direita aponta, ao
mesmo tempo, ao operando da
esquerda.
Avalia em falso quando o
tipo de valor ou expressão no
operando da direita aponta para
um tipo diferente do que o valor
ou expressão no operando da
esquerda.
False and False is False
“Hello” in “Hello
Goodbye” is True
type(2)
is int
is True
type(2)
is not int
is False
Para Leigos: A série de livros para iniciantes que mais vende no mundo.
Começando a Programar
em Python Para Leigos
not
Lógico
not in
Membro
or
Lógico
Nega o valor verdadeiro de
um único operando. Um valor
verdadeiro se torna falso, e um
valor falso se torna verdadeiro.
Determina se o valor do
operando da esquerda
está faltando na sequência
encontrada no operando da
direita.
Determina quando um dos dois
operandos são verdadeiros.
a
Folh la
o
de C
not True is False
not False is True
“Hello”, not in “Hello
Goodbye” is False
True or True is True
True or False is True
False or True is True
False or False is False
Precedência do Operador Python
Quando você cria simples declarações que contenham apenas um operador, a
sequência de determinação da saída daquele operador também é simples. No
entanto, quando você começa a trabalhar com múltiplos operadores, é necessário
determinar qual operador vai avaliar primeiro.
Por exemplo, é importante saber se 1 + 2 * 3 dá como resultado 7 (em que a multiplicação é feita primeiro) ou 9 (quando a adição é feita em primeiro lugar). Uma
ordem de precedência de operador diz que a resposta correta é 7, a menos que
você use parênteses para substituir a ordem padrão. Neste caso, (1 + 2) * 3 vai ter
como resultado 9, porque os parênteses têm uma ordem de precedência maior do
que a multiplicação.
A tabela a seguir define a ordem de precedência de operadores para o Python.
Operador
()
**
~+* /% //
Descrição
Parênteses são usados para agrupar expressões e para substituir a
precedência padrão para que você possa forçar uma operação de
baixa precedência (como adição), a ter precedência sobre uma
operação de maior precedência (como multiplicação).
A exponenciação eleva o valor do operando da esquerda à potência
do operando da direita.
Os operadores unários interagem com uma única variável ou
expressão.
Multiplicação, divisão, módulo e
floor division.
Para Leigos: A série de livros para iniciantes que mais vende no mundo.
Começando a Programar
em Python Para Leigos
+>> <<
Adição e subtração.
Alteração de bit direito e esquerdo.
&
^|
<= < >> =
== !=
= %= /= //= -=
+= *= **=
is
is not
in
not in
not or and
Bitwise AND
Bitwise exclusive OR e standard OR.
Operadores de comparação.
Operadores de igualdade.
Operadores de atribuição.
a
Folh la
o
de C
Operadores de identidade.
Operadores de membro.
Operadores lógicos.
Para Leigos: A série de livros para iniciantes que mais vende no mundo.
Download