Olá Habr! Apresento a você a tradução do artigo "Equivalentes em Python e JavaScript. Parte 1" .
Apesar do fato de Python e Javascript serem bem diferentes, há muitas semelhanças que qualquer desenvolvedor de pilha cheia deve conhecer. Nesta série de 4 artigos, veremos o que é comum nos dois idiomas e consideraremos vários problemas conhecidos, bem como maneiras de resolvê-los.
Isso não é uma referência; não haverá informações básicas sobre os tipos de variáveis, ifs e loops.
Mas examinaremos estruturas e operações de dados mais complexas usando Python e Javascript.
Eu também ilustrarei isso com exemplos práticos.
Esta série será de interesse para backders usando Django, Flask ou qualquer outra estrutura Python que queira aprender mais sobre o Javascript moderno. Por outro lado, esses artigos serão úteis para os candidatos que desejam entender melhor como o back-end funciona ou até mesmo escrever seu site no Django.
Outros artigos desta série:
- Parte dois : JSON, regulares, erros de exceção
- Parte três : Python e JS modernos: padrões de strings (linhas-f), descompactação de lista, funções lambda, iterações de lista, geradores, conjuntos.
- A quarta parte são argumentos de função, criando e trabalhando com classes, herança, getter setter e propriedades de classe.
Tipo de elenco
Vamos começar lançando a string para o todo. No Python, tudo é simples e direto:
number = int(text)
Mas em JS você tem que explicar para qual sistema você vai levar - decimal, octal, hexadecimal ou binário:
number = parseInt(text, 10);
Para usar o sistema decimal usual, passamos 10 como o segundo argumento para a função parseInt (). 8 para octal, 16 para hexadecimal ou 2 para binário. Se o segundo parâmetro for omitido, o número começa em zero e você usa um navegador desatualizado, a linha com o texto será interpretada como um sistema octal:
parseInt('012') == 10
Atribuição Condicional
Embora Python e JS usem sintaxe diferente para isso, esta operação é popular nos dois idiomas. É popular porque em uma expressão é possível atribuir valores diferentes para os casos Verdadeiro e Falso.
A partir do Python 2.7, a atribuição condicional se parece com:
value = 'YES' if positive == True else 'NO'
Em JavaScript, a atribuição condicional é feita usando um operador ternário ?
, bem como em C, C ++, C #, Java, Ruby, PHP, Perl, Swift e ActionScript:
value = positive === true? 'YES': 'NO';
Acesse uma propriedade do objeto pelo nome da propriedade
A maneira usual de acessar uma propriedade de objeto em Python e JS é a mesma:
obj.color = 'YELLOW'
Mas e se o nome da propriedade estiver entre uma variável de string? Por exemplo, o nome da propriedade pode ser obtido na lista de propriedades ou o nome da propriedade é composto por duas variáveis de sequência: "title" + land_code
.
No Python, as getattr()
e setattr()
existem para isso:
attribute = 'color' value = getattr(obj, attribute, 'GREEN') setattr(obj, attribute, value)
Em JS, você pode tratar um objeto como um dicionário e passar o nome da propriedade entre colchetes:
attribute = 'color'; value = obj[attribute] || 'GREEN'; obj[attribute] = value;
Para obter o valor padrão se uma propriedade com o mesmo nome não existir, a função getattr()
no Python possui um terceiro parâmetro para isso. Em JS, se a propriedade solicitada estiver ausente, a função retornará undefined
. Pode ser comparado com o operador OR
com o valor padrão - esta é uma prática padrão em JS - este método pode ser encontrado em muitas estruturas e bibliotecas.
Acesso ao dicionário de chaves
Semelhante ao acima. A chave é indicada entre colchetes nos dois idiomas:
dictionary = {} dictionary['color'] = 'YELLOW'
Para acesso à chave, o Python usa sintaxe padrão com colchetes, no entanto, se essa chave estiver ausente, isso gerará uma exceção com um erro KeyError
.
Mais flexível é o método get()
, que retornará None
se não houver chave. Você também pode passar um valor que será retornado se a chave estiver ausente:
key = 'color' value = dictionary.get(key, 'GREEN')
Em JS, você pode fazer o mesmo truque que com uma propriedade de objeto - OR
com um valor padrão:
key = 'color'; value = dictionary[key] || 'GREEN';
Fatias: Listas e Cordas
O Python possui um operador [:]
obter parte de uma lista, uma tupla ou estruturas similares. Um exemplo com um objeto do tipo Django QuerySets
:
items = [1, 2, 3, 4, 5] first_two = items[:2]
JS possui um método slice()
com o mesmo efeito:
items = [1, 2, 3, 4, 5]; first_two = items.slice(0, 2);
Mas não confunda com o método splice()
que modifica a matriz original!
No Python, o operador [:]
também se aplica a strings:
text = 'ABCDE' first_two = text[:2]
Em JS, as strings também têm um método slice()
:
text = 'ABCDE'; first_two = text.slice(0, 2);
Operações de lista
Na programação, você geralmente precisa coletar e analisar uma sequência de elementos. No Python, as listas geralmente são usadas para isso e, em Javascript, matrizes. Eles têm sintaxe e operações semelhantes, mas métodos diferentes para adicionar e remover elementos.
Nós conectamos as duas listas, adicionamos um elemento ao final, adicionamos um elemento ao início, obtemos e excluímos o elemento no início, obtemos e excluímos o elemento do final e excluímos o elemento específico pelo índice.
Python:
items1 = ['A'] items2 = ['B'] items = items1 + items2
O mesmo em Javascript:
items1 = ['A']; items2 = ['B']; items = items1.concat(items2);
Unir conjuntos de strings
Combine um conjunto de elementos de sequência em uma única linha usando um espaço, uma vírgula ou uma nova linha como caractere de conexão.
Em Python, o método string join()
é usado para isso, que usa uma lista ou uma tupla como argumento. Para os não iniciados (na sintaxe Python), pode parecer estranho iniciar uma expressão com um separador, mas após o uso regular, você se acostumará com esta forma de notação:
items = ['A', 'B', 'C'] text = ', '.join(items)
Em JS, matrizes têm um método join()
com um separador como argumento:
items = ['A', 'B', 'C']; text = items.join(', ');
Resumir
- Listas e tuplas em Python correspondem a matrizes em Javascript.
- Os dicionários em Python correspondem aos objetos em Javascript.
- Strings em Python são semelhantes às strings em Javascript.
- Em Javascript, converta uma sequência para um número com cuidado, lembrando-se dos sistemas numéricos.
- Expressões condicionais de linha única existem em seus idiomas.
- A combinação de seqüências de strings (
' '.join
) no Python desencoraja os não iniciados na sintaxe, mas você se acostuma rapidamente.
Na próxima série, veremos a criação e análise de JSON, expressões regulares e manipulação de erros e exceções!