python para desenvolvedores javascript

logo depois de ter lido esse post, eu percebi que as poucas dificuldades que tive durante minha adaptação de javascript pra python (há anos) nunca foram ensinadas pra mim de uma maneira clara.

apesar de ambas as linguagens serem razoavelmente parecidas, achei interessante a ideia, então aqui vão algumas diferenças pra se ter em mente na hora de virar a chave. algumas são de Mario Pabon, o autor do post original, e algumas coisas são minhas mesmo. :)

ah, só um detalhe: aqui vamos supor que você está usando python 3, sim? bem, vamos lá!


sintaxe

declaração de variáveis

para ambas as linguagens, declarar variáveis é simples.

mais tarde vamos falar de tipos, que fazem toda a diferença entre as linguagens. só vamos deixar clara, por enquanto, uma grande diferença: variáveis em python sempre pertencem ao contexto do seu bloco.

blocos

python tende a sempre ser mais estrito do que javascript. em python, não seguir a indentação do código pode fazer com que ele nem rode. isso se dá porque o python usa a indentação para definir blocos, no lugar das chaves do javascript.

se a linha do print(x) tivesse mais um ou menos um espaço antes da chamada da função, o interpretador do python levantaria uma exceção IndentationError, porque a diferença de espaços criaria um bloco inválido.

outro possível problema causado pelo mau uso de indentação em python é o de escopo.

controle de fluxo

if...else, while e for em python são razoavelmente parecidos com javascript.

if…else

while

for

em python, ao iterar sobre uma lista, não precisamos declarar o índice ou resgatar o objeto internamente — o objeto da vez já está implícito.

o javascript até aceita a sintaxe de for (item in lista), mas se comporta de maneira diferente, colocando na variável item o valor do contador do loop.

tipos

os tipos em python são razoavelmente parecidos ao de javascript, já que você não precisa declarar os tipos para cada variável na hora da declaração (como se faz com java ou C#, por exemplo).

a grande diferença é como os tipos interagem, já que várias operações permitidas em javascript não são em python. python prefere levantar um erro em vez de fazer uma operação entre tipos que pode gerar um dado errado.

um dos exemplos mais clássicos é o da soma de números com strings:

já que tiramos essa dúvida da reta, vou dar um apanhado básico dos tipos em python.

números

ao contário de javascript, python tem vários tipos diferentes para diferentes números.

  • inteiros (integer): 1, 2, 3
  • ponto flutuante (float): 4.20, 4e420
  • números complexos: 4 + 20j
  • booleanos (boolean): True, False

você pode fazer as mesmas operações em ambas as linguagens, como, por exemplo, soma, subtração, divisão, multiplicação e potenciação.

listas

listas em python são bem parecidas com as de javascript, com alguns adereços a mais. elas podem conter uma mistura de tipos:

há também uma sintaxe especial para pegar partes de uma lista:

e algumas funções e métodos úteis:

para concatenar listas, é só somá-las:

pra fechar, temos em python o que chamam de list comprehension. é uma forma de criar listas dinamicamente.

strings

strings em python são praticamente iguais às de javascript. você pode acessar cada caractere individualmente, mas só pode alterar o conteúdo ao reassinalar a variável.

dicionários

dicionários são listas associativas em python, muito parecidos com objetos em javascript. eles são declarados praticamente da mesma forma.

já que em python nós preferimos levantar erros em vez de falhar silenciosamente, temos um método padrão dos dicionários para resgatar valores default no caso de eles não terem sido declarados:

None

None é equivalente a null em javascript. isso significa que None representa a ausência de um valor e é avaliado como false.

detalhe: não há par para undefined em python, já que tentar acessar algo não definido em python levanta uma exceção NameError.

funções

assim como em javascript, funções também são objetos em python. isso significa que você pode passar funções como argumentos/callbacks ou até assinalar propriedades pra funções.

módulos

não quero falar sobre ES6 aqui, mas os módulos (pacotes) em python são bem parecidos (em sintaxe) com os módulos em javascript ES6.

definindo um módulo

ao contrário de ES6, em que você tem que declarar o que você tá exportando pro seu módulo, em python você sõ precisa criar um arquivo .py e suas punções/classes/oquefor estão prontas pra serem importadas. basta que, na mesma pasta do seu módulo, você coloque um arquivo __init__.py pra que o interpretador python reconheça o módulo.

ah, e pra instalar pacotes disponibilizados pela comunidade, tipo npm, você usa o pip.

programação orientada a objetos

em python, assim como ES6, há suporte a classes e herança entre objetos. isso é diferente da herança baseada em prototypes clássica do javascript.

desse jeito, se inicializarmos um humano chamado Jorge e comemorarmos seu aniversário, teremos o seguinte:

herança

tendo como base nossa classe de animal, podemos, por exemplo, termos uma subclasse de animal chamada Girafa:

assim, se inicializarmos uma girafa…


é claro que tem MUITO mais sobre python do que só isso, então se tiverem qualquer dúvida ou acharem que algo poderia ser explicado melhor, só falar nos comentários.

e lembrem que a melhor forma de aprender uma linguagem é meter a mão na massa e fazer um projetinho! se não souberem por onde começar, eu recomendo fortemente o tutorial das pyladies do Django Girls, mas se não quiser aprender com desenvolvimento web, tem sempre o python para zumbis do querido e fofíssimo Masanori.

abraços, e até a próxima!


Originally published at lucianoratamero.github.io.

Like what you read? Give Luciano Ratamero a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.