Hola Habr! Les presento la traducción del artículo "Equivalentes en Python y JavaScript. Parte 1" .
A pesar de que Python y Javascript son bastante diferentes, hay muchas similitudes que cualquier desarrollador de pila completa debe tener en cuenta. En esta serie de 4 artículos, veremos lo que es común en ambos idiomas y consideraremos una serie de problemas conocidos, así como formas de resolverlos.
Esto no es una referencia; no habrá información básica sobre los tipos de variables, ifs y bucles.
Pero veremos estructuras de datos y operaciones más complejas con ellos usando Python y Javascript.
También ilustraré esto con ejemplos prácticos.
Esta serie será de interés para los patrocinadores que usan Django, Flask o cualquier otro marco de Python que quiera aprender más sobre Javascript moderno. Por otro lado, estos artículos serán útiles para los principales candidatos que quieran comprender mejor cómo funciona el backend, o incluso escribir su sitio en Django.
Otros artículos en esta serie:
- Segunda parte : JSON, clientes habituales, errores de excepción
- Parte tres : Python y JS modernos: patrones de cadenas (cadenas f), desempaque de listas, funciones lambda, iteraciones de listas, generadores, conjuntos.
- La cuarta parte es argumentos de función, crear y trabajar con clases, herencia, getter setter y propiedades de clase.
Tipo de reparto
Comencemos lanzando la cadena al conjunto. En Python, todo es simple y directo:
number = int(text)
Pero en JS debe explicar a qué sistema va a conducir: decimal, octal, hexadecimal o binario:
number = parseInt(text, 10);
Para usar el sistema decimal habitual, pasamos 10 como segundo argumento para la función parseInt (). 8 para octal, 16 para hexadecimal o 2 para binario. Si se omite el segundo parámetro, el número comienza desde cero y utiliza un navegador desactualizado, la línea con el texto se interpretará como un sistema octal:
parseInt('012') == 10
Asignación Condicional
Aunque Python y JS usan una sintaxis diferente para esto, esta operación es popular en ambos idiomas. Es popular porque en una expresión es posible asignar valores diferentes para casos verdaderos y falsos.
A partir de Python 2.7, la asignación condicional se ve así:
value = 'YES' if positive == True else 'NO'
En JavaScript, la asignación condicional se realiza utilizando un operador ternario ?
, así como en C, C ++, C #, Java, Ruby, PHP, Perl, Swift y ActionScript:
value = positive === true? 'YES': 'NO';
Acceda a una propiedad de objeto por nombre de propiedad
La forma habitual de acceder a una propiedad de objeto en Python y JS es la misma:
obj.color = 'YELLOW'
Pero, ¿qué pasa si el nombre de la propiedad está encerrado en una variable de cadena? Por ejemplo, el nombre de la propiedad se puede obtener de la lista de propiedades o el nombre de la propiedad se compone de dos variables de cadena: "title" + land_code
.
En Python, las getattr()
y setattr()
existen para esto:
attribute = 'color' value = getattr(obj, attribute, 'GREEN') setattr(obj, attribute, value)
En JS, puede tratar un objeto como un diccionario y pasar el nombre de la propiedad entre corchetes:
attribute = 'color'; value = obj[attribute] || 'GREEN'; obj[attribute] = value;
Para obtener el valor predeterminado si no existe una propiedad con el mismo nombre, la función getattr()
en Python tiene un tercer parámetro para esto. En JS, si falta la propiedad solicitada, la función volverá undefined
. Se puede comparar con el operador OR
con el valor predeterminado; esta es una práctica estándar en JS; este método se puede encontrar en muchos marcos y bibliotecas.
Acceso clave al diccionario
Similar a lo anterior. La clave se indica normalmente entre corchetes en ambos idiomas:
dictionary = {} dictionary['color'] = 'YELLOW'
Para el acceso a la clave, Python utiliza la sintaxis estándar con corchetes, sin embargo, si falta una clave de este tipo, se generará una excepción con un error KeyError
.
Más flexible es el método get()
, que devolverá None
si no hay una clave. También puede pasar un valor que se devolverá si falta la clave:
key = 'color' value = dictionary.get(key, 'GREEN')
En JS, puede hacer el mismo truco que con una propiedad de objeto, OR
con un valor predeterminado:
key = 'color'; value = dictionary[key] || 'GREEN';
Rebanadas: listas y cadenas
Python tiene un operador [:]
obtener parte de una lista, una tupla o estructuras similares. Un ejemplo con un objeto de tipo Django QuerySets
:
items = [1, 2, 3, 4, 5] first_two = items[:2]
JS tiene un método slice()
con el mismo efecto:
items = [1, 2, 3, 4, 5]; first_two = items.slice(0, 2);
¡Pero no confunda con el método splice()
que modifica la matriz original!
En Python, el operador [:]
también se aplica a las cadenas:
text = 'ABCDE' first_two = text[:2]
En JS, las cadenas también tienen un método slice()
:
text = 'ABCDE'; first_two = text.slice(0, 2);
Operaciones de lista
En programación, a menudo tienes que recopilar y analizar una secuencia de elementos. En Python, las listas se usan generalmente para esto, y en Javascript, las matrices. Tienen una sintaxis y operaciones similares, pero diferentes métodos para agregar y eliminar elementos.
Conectamos las dos listas, agregamos un elemento al final, agregamos un elemento al principio, obtenemos y eliminamos el elemento al principio, obtenemos y eliminamos el elemento del final y eliminamos el elemento específico por índice.
Python:
items1 = ['A'] items2 = ['B'] items = items1 + items2
Lo mismo en Javascript:
items1 = ['A']; items2 = ['B']; items = items1.concat(items2);
Unir conjuntos de cuerdas
Combine un conjunto de elementos de cadena en una sola línea utilizando un espacio, una coma o una nueva línea como carácter de conexión.
En Python, el método de cadena join()
se usa para esto, que toma una lista o una tupla como argumento. Para los no iniciados (en la sintaxis de Python), puede parecer extraño comenzar una expresión con un separador, pero después del uso regular se acostumbrará a esta forma de notación:
items = ['A', 'B', 'C'] text = ', '.join(items)
En JS, las matrices tienen un método join()
con un separador como argumento:
items = ['A', 'B', 'C']; text = items.join(', ');
Para resumir
- Las listas y tuplas en Python corresponden a matrices en Javascript.
- Los diccionarios en Python corresponden a objetos en Javascript.
- Las cadenas en Python son similares a las cadenas en Javascript.
- En Javascript, convierta una cadena a un número con cuidado, recordando los sistemas numéricos.
- Las expresiones condicionales de una sola línea existen en sus idiomas.
- La combinación de secuencias de cadenas (
' '.join
) en Python desalienta a los no iniciados en la sintaxis, pero rápidamente te acostumbras.
¡En la próxima serie, consideramos crear y analizar JSON, expresiones regulares y manejar errores y excepciones!