El título de esta lección debería ser "De Python a JS", porque así es como evolucionó la historia. Python nació primero y es mucho más maduro. Con Python, eres capaz de hacer muchas más cosas porque es un lenguaje de backend y tiene librerías y herramientas para cualquier cosa que puedas imaginar.
Python y Javascript son amigos. Juntos forman el mejor equipo posible para realizar cualquier desarrollo importante que puedas imaginar.
Con Javascript, estabas vinculado y limitado al navegador, no puedes acceder al computador del cliente y es básicamente un lenguaje de renderización. Pero Python es diferente, al ser un lenguaje de backend, se ejecuta en tu propio servidor, lo que significa que tiene acceso y puedes controlar toda la computadora con él. Tienes acceso a cualquier aplicación que se ejecute en la misma computadora. Tienes acceso a la consola. Tiene acceso a la red a la que está conectada la computadora y mucho más.
Por otro lado, Python es el lenguaje de back-end de más rápido crecimiento en el mundo. Es el lenguaje más versátil y fácil de codificar con una de las comunidades más sólidas.
Cuando lo comparas con otros lenguajes de back-end, Python lidera en casi todas las funciones que ofrece: Data Science, AI, desarrollos de API, desarrollos web, etc.
Estas son algunas de las razones por las cuales Python ha llegado hasta este punto:
Simplicidad | Rendimiento |
---|---|
Python estaba destinado a ser simple y fácil. Aquí está el manifiesto de Python: https://en.wikipedia.org/wiki/Zen_of_Python Nota: Ya no hay más punto y coma o corchetes, o declarar variables, o la confusa funcionalidad del "this". | Python es más rápido que Java, PHP, Ruby y el 90% de los otros lenguajes backend. Solo los lenguajes de bajo nivel como C ++ (difícil de usar) o muy especializados como Node.js pueden superarlo. La escalabilidad de Python se ha demostrado una y otra vez con aplicaciones como el motor de búsqueda de Google, Youtube, Google Apps, etc. |
Comunidad | Herramientas |
---|---|
Python es el idioma oficial de Google. También es uno de los idiomas más antiguos con comunidades enormes alrededor de cada una de sus librerias\herramientas. MIT lo usa para enseñar código. La NASA para construir cohetes. Quora, Facebook, Yahoo, Amazon, etc. ¡Casi todas las grandes empresas del mundo tienen que usarlo! | La mayoría de las librerias de Python son las mejores en lo que hacen: [MathLab] (https://www.mathworks.com/help/matlab/matlab-engine-for-python.html?requestedDomain=true) (para procesamiento de datos) , [Pandas] (https://pandas.pydata.org/) (big data), [Web.py] (http://webpy.org/) (servidor web), [Django] (https: // www .djangoproject.com /) (web framework), [PyBrain] (http://pybrain.org/) (AI), [TensorFlow] (https://www.tensorflow.org/) (Machine Learning), etc. ¡Podríamos estar aquí todo el día! Lo más sorprendente es que estas librerías sólo están a una "pip install" (como cuando usamos NPM con JS). |
Python y Javascript se complementan entre sí, pero en cuanto a funcionalidad, no tienen NADA en común, no tienen el mismo propósito, no hacen las mismas cosas, provienen de diferentes orígenes, etc.
Lo único que recordarás de Javascript es lo básico de cualquier lenguaje de programación: bucle, uso de condicionales, variables, clases, funciones y objetos.
Solo hay unas pocas diferencias; aquí está la explicación:
En Javascript | En Python |
---|---|
Número | Python tiene el mismo tipo de datos "Número" pero puede aceptar más opciones que JS, como fracciones (2/3) o números complejos.myNumber = 23.23; //decimal myNumber = 54; //entero myNumber = 12.00; //decimal (incluso con 00 como decimales). |
Undefined/Null ahora es: None | El tipo de datos undefined no está disponible en Python. Aquí "undefined" y "null" son el mismo tipo de datos: None.myNumber; // None no está definido |
Array | En Python, los array se denominan "List o listas" y son similares a los array de JS, pero son mucho más flexibles y fáciles de utilizar..myArray = ['Juan','John','Steven']; //array de índices numéricos |
Objeto | En Javascript, los objetos y los diccionarios son casi lo mismo. Puede hacer lo que quiera con un objeto porque no tienes que declarar primero su Clase y atenerse a su definición.var myCar = {} myCar.color = 'blue'; Python, por otro lado, separa el tipo de datos Diccionario del tipo de datos Objeto. Los objetos no pueden ser declarados informalmente. Primero debes definir su clase antes de poder crear una instancia de ellos. class Car(object): def __init__(self, color): self.color = i myCar = Car('blue') |
Conjunto y Tupla | Javascript no tiene nada similar, pueden ser muy útiles: las tuplas se ordenan; los conjuntos son secuencias inmutables de valores. |
String | Es lo mismo en Python. |
En Javascript, puedes importar variables de otros archivos con el comando import o require, pero tienes que exportar los archivos de las variables primero.
En Python, puedes hacer de cualquier carpeta un paquete creando un archivo _init_.py dentro de ella. Luego, puedes importar lo que quieras en esa carpeta sin tener que exportar explícitamente nada.
1from package1 import module1 2 3from package1.module2 import function1 4
Lo que es NPM es para Javascript, PIP es para Python. Ambas bestias son increíbles pero muy diferentes por dentro. La mayor diferencia es que los paquetes NPM se descargan localmente a una carpeta "node_modules" mientras que los paquetes PIP se instalan en toda la máquina, fuera de la carpeta del proyecto. Otra pequeña diferencia es que NPM usa package.json
y PIP usa un archivo requirements.txt.
Javascript es tan flexible que no tienes que prestar mucha atención a los tipos de datos. A Python no le gusta eso... en Python, te acostumbrarás a declarar variables y convertirlas entre tipos de datos.
1var result = '5' - '2'; 2//el resultado ahora es igual a 3
1# En Python sustraer strings producirá un error, en lugar de eso debes hacer esto: 2 3result = int('5') - int('2') # el resultado ahora es igual a 3 4
Python tiene "print" para escribir en un documento o en la consola. Recuerda que, dado que Python, como cualquier otro lenguaje de back-end, se ejecuta antes del evento de preload, no tiene acceso a la consola de Javascript.
1var simpleValue = ‘hello’; 2console.log(simpleValue); 3//Esto imprimirá el contenido de la variable. 4var arrayValue = [‘Hello’,23, 76, ‘World’,43]; 5console.log(arrayValue); 6//Esto imprimirá el contenido del array y sus elementos.
1simple_value = ‘Hello’ 2print(simple_value) # Esto imprimirá el contenido. 3list_value = [‘Hello’, 23, 76, ’World’, 43] 4print(list_value) # Esto funcionará, imprimiendo el contenido de la lista en un formato como este: [‘Hello’, 23, 76, ’World’, 43] 5
Finalmente, en ES2015, Javascript incluye las "funciones flecha". Esa es una manera muy fácil y liviana de declarar y usar funciones. Python, por otro lado, tiene algo similar llamado funciones "lambda" que básicamente te permiten usar pequeñas funciones anónimas en línea como accesos directos.
1 2# Usando una función flecha (arrow function) para mapear una lista 3 4var peopleArray = [{ name: "Mario Peres" },{ name: "Emilio Peres" },{ name: "Yusaiba Peres" }]; 5var returningMapObject = peopleArray.map(person => person.name); 6console.log(returningMapObject); 7
1 2# Usando lambda para mapear una lista 3 4people_list = [{"name": "Mario Peres"}, {"name": "Emilio Peres"}, {"name": "Yusaiba Peres"}] 5returning_map_object = map(lambda obj: obj['name'], people_array) 6names_list = list(returning_map_object) 7print(names_list) 8 9# ahora names_list es una lista de nombres como ["Mario Peres", "Emilio Peres", "Yusaiba Peres"] 10
📺 Aquí hay un video extraño pero sorprendente que explica las funciones lambda: https://www.youtube.com/watch?v=25ovCm9jKfA
1//haciendo un bucle foreach en js 2myArray.forEach(function(item,index,array) { 3 console.log(item); 4}); 5 6//haciendo un bucle for en js 7for(var i = 0; i < myArray.length; i++){ 8 console.log(myArray[i]); 9}
1colors = ["red", "green", "blue", "purple"] 2for color in colors: 3 print(color) 4
1var myArray = [‘Academy’, ‘Coding’]; 2myArray.push(‘4Geeks’); //Añadiendo un item 3//para eliminar el elemento en la posición INDEX 4myArray.splice(index, 1);
1my_list = ['The', 'earth', 'revolves', 'around', 'sun'] 2my_list.insert(0,"Yes") 3print(my_list) # Salida: ['Yes', 'The', 'earth', 'revolves', 'around', 'sun'] 4 5my_list.remove("Yes") 6print(my_list) # Salida: ['The', 'earth', 'revolves', 'around', 'sun'] 7
1# Orden ascendente 2number_list = [5, 2, 3, 1, 4] 3number_list.sort() 4 5# Ordenar la lista de objetos usando un parámetro "key" 6my_list = [{"name": "Mario Peres"}, {"name": "Emilio Peres"}, {"name": "Yusaiba Peres"}] 7my_list.sort(key=lambda person: person['name']) 8
📺 Llamemos a Socratica de nuevo para entender la clasificación en Python: https://www.youtube.com/watch?v=QtwhlHP_tqc
Ahora hay una manera de hacer "switch"… pero ¿a quién le importa? 🙂
Python trae un nuevo tipo de datos llamado "Tupla". Piensa en ello como una lista de rendimiento super delgado y rápido. Pero, como siempre, para aumentar el rendimiento necesitamos disminuir la funcionalidad.
📺 Este es un video obligatorio que explica la diferencia entre ellos: https://www.youtube.com/watch?v=NI26dqhs2Rk
1//Hay dos maneras de declarar un objeto 2 3//Como un objeto literal 4var obj = { "name": "Mario", "lastname": "Perez" }; 5 6//Como una Clase 7class Person{ 8 constructor(){ 9 this.name = ""; 10 this.lastname = ""; 11 } 12} 13 14var obj = new Person(); 15obj.name = "Mario"; 16obj.lastname = "Perez";
1# En Python tenemos Clases y Diccionarios. 2 3# Así es como tu declaras y usas un diccionario. 4my_dict = {} 5my_dict['name'] = "Mario" 6my_dict['lastname'] = "Perez" 7 8# Así es como declaras y usas una clase. 9class Person: 10 def __init__(self): 11 name = '' 12 lastname = '' 13 14my_person = Person() 15my_person.name = "Mario" 16my_person.lastname = "Perez" 17
📺 Socratica, nuestro gran espécimen y amigo evolucionado, explica Objetos de una manera excelente: https://www.youtube.com/watch?v=apACNr7DC_s
Las PEPs son “propuestas de mejora de Python” desarrolladas, aprobadas y publicadas por la comunidad de Python y no son opcionales.
Hay algunas que debemos conocer desde el inicio de nuestro aprendizaje.
Una en particular es la PEP8. La PEP8 es la "Guía de estilo de código para Python". Si bien es una guía, en la comunidad Python es muy, pero muy utilizada y si no la utilizas adecuadamente, quien lea tu código lo sabrá inmediatamente.
A continuación vamos a listar algunos ejemplos (no todos):
Utilizar nombres descriptivos (siempre) y en minúsculas. Para nombres compuestos, separar las palabras con guiones bajos.
1mi_variable = 12 2 3
Utilizar nombres descriptivos y en mayúsculas separando palabras con guiones bajos.
1MI_CONSTANTE = 12 2
Siempre colocar un espacio en blanco, antes y después de un operador
1monto_bruto = 175 2tasa_interes = 12 3monto_interes = monto_bruto * tasa_interes / 100 4tasa_bonificacion = 5 5importe_bonificacion = monto_bruto * tasa_bonificacion / 100 6monto_neto = (monto_bruto - importe_bonificacion) + monto_interes 7
Los comentarios en la misma línea del código deben separarse con dos espacios en blanco y luego del símbolo # debe ir un solo espacio en blanco.
1age = 15 # edad de María 2
Una indentación de 4 (cuatro) espacios en blanco indica que las instrucciones identadas forman parte de una misma estructura de control o bloque.
1numero = 50 2if numero < 100: 3 print('Hola') 4 print('Menor que 100') 5elif numero < 200: 6 print('Chao') 7 print('Mayor a 200') 8else: 9 print('Adiós') 10 print('mayor o igual a 100 y menor o igual que 200') 11