Aprendiendo Python: de cero a héroe

Antes que nada, ¿qué es Python? Según su creador, Guido van Rossum, Python es un:

"El lenguaje de programación de alto nivel, y su filosofía de diseño central, tiene que ver con la legibilidad del código y una sintaxis que permite a los programadores expresar conceptos en unas pocas líneas de código".

Para mí, la primera razón para aprender Python fue que, de hecho, es una hermosa lenguaje de programación. Fue muy natural codificar y expresar mis pensamientos.

Otra razón fue que podemos usar la codificación en Python de múltiples maneras: la ciencia de datos, el desarrollo web y el aprendizaje automático brillan aquí. Quora, Pinterest y Spotify usan Python para su desarrollo web de back-end. Así que vamos a aprender un poco al respecto.

Los basicos

1. Variables

Puedes pensar en variables como palabras que almacenan un valor. Simple como eso.

En Python, es realmente fácil definir una variable y establecerle un valor. Imagine que desea almacenar el número 1 en una variable llamada "uno". Hagámoslo:

¿Qué tan simple fue eso? Usted acaba de asignar el valor 1 a la variable "uno".

Y puede asignar cualquier otro valor a cualquier otra variable que desee. Como puede ver en la tabla anterior, la variable " dos " almacena el número entero 2 , y "un número_numerario " almacena 10,000 .

Además de enteros, también podemos usar booleanos (verdadero / falso), cadenas, flotante y muchos otros tipos de datos.

2. Flujo de control: declaraciones condicionales

" If " usa una expresión para evaluar si una declaración es verdadera o falsa. Si es Verdadero, ejecuta lo que está dentro de la instrucción "si". Por ejemplo:

2 es mayor que 1 , por lo que se ejecuta el código de " impresión ".

La instrucción " else " se ejecutará si la expresión " if " es falsa .

1 no es mayor que 2 , por lo que se ejecutará el código dentro de la declaración " else ".

También puede usar una declaración " elif ":

3. Looping / Iterator

En Python, podemos iterar en diferentes formas. Hablaré de dos: mientras y para .

Mientras se realiza Looping: mientras que la declaración es True, se ejecutará el código dentro del bloque. Por lo tanto, este código imprimirá el número del 1 al 10 .

El bucle while necesita una “condición de bucle. "Si se mantiene verdadero, continúa iterando. En este ejemplo, cuando num es 11 la condición de bucle es False .

Otro código básico de código para entenderlo mejor:

La condición de bucle es True por lo que sigue iterando, hasta que lo establezcamos en False .

Para Looping : aplica la variable " num " al bloque, y la instrucción " for " lo iterará por usted. Este código se imprimirá igual que el código: de 1 a 10 .

¿Ver? Es tan simple El rango comienza con 1 y va hasta el 11 ° elemento ( 10 es el 10 ° elemento).

Lista: Colección | Array | Estructura de datos

Imagine que desea almacenar el número entero 1 en una variable. Pero quizás ahora quieras almacenar 2. Y 3, 4, 5 …

¿Tengo otra forma de almacenar todos los enteros que quiero, pero no en millones de variables ? Lo has adivinado, de hecho hay otra forma de almacenarlos.

List es una colección que se puede usar para almacenar una lista de valores (como estos enteros que desea). Así que vamos a usarlo:

Es realmente simple. Creamos una matriz y la almacenamos en my_integer .

Pero tal vez usted está preguntando: "¿Cómo puedo obtener un valor de este conjunto?"

Gran pregunta List tiene un concepto llamado índice . El primer elemento obtiene el índice 0 (cero). El segundo obtiene 1, y así sucesivamente. Entiendes la idea.

Para hacerlo más claro, podemos representar la matriz y cada elemento con su índice. Puedo dibujarlo:

Usando la sintaxis de Python, también es simple de entender:

Imagine que no desea almacenar enteros. Solo quiere almacenar cadenas, como una lista de los nombres de sus familiares. El mío se vería así:

Funciona de la misma manera que los enteros. Bonito.

Acabamos de aprender cómo funcionan los índices de Lists . Pero aún necesito mostrarle cómo podemos agregar un elemento a la estructura de datos de la List (un elemento a una lista).

El método más común para agregar un nuevo valor a una List es append . Vamos a ver cómo funciona:

append es súper simple. Solo necesita aplicar el elemento (por ejemplo, " The Effective Engineer ") como parámetro de append .

Bueno, ya basta de Lists . Hablemos de otra estructura de datos.

Diccionario: estructura de datos clave-valor

Ahora sabemos que las Lists están indexadas con números enteros. Pero, ¿y si no queremos usar números enteros como índices? Algunas estructuras de datos que podemos usar son numéricas, cadenas u otros tipos de índices.

Aprendamos sobre la estructura de datos del Dictionary . Dictionary es una colección de pares clave-valor. Esto es lo que parece:

La clave es el índice que apunta a la valor . ¿Cómo accedemos al valor del Dictionary ? Lo has adivinado, usando la tecla . Vamos a intentarlo:

Creé un Dictionary sobre mí. Mi nombre, apodo y nacionalidad. Esos atributos son las claves del Dictionary .

Como hemos aprendido cómo acceder a la List utilizando el índice, también utilizamos índices (teclas en el Dictionary contexto) para acceder al valor almacenado en el Dictionary .

En el ejemplo, imprimí una frase sobre mí usando todos los valores almacenados en el Dictionary . Bastante simple, ¿verdad?

Otra cosa interesante de Dictionary es que podemos usar cualquier cosa como valor. En el Dictionary Creé, quiero agregar la clave "edad" y mi edad entera real en ella:

Aquí tenemos un par clave (edad) valor (24) usando una cadena como la clave y un entero como el valor .

Como hicimos con las Lists , aprendamos cómo agregar elementos a un Dictionary . La clave apuntando a un el valor es una gran parte de lo que es el Dictionary . Esto también es cierto cuando estamos hablando de agregarle elementos:

Solo tenemos que asignarle un valor a un Dictionary clave . Nada complicado aquí, ¿verdad?

Iteración: bucle a través de estructuras de datos

Como aprendimos en los Fundamentos de Python , la iteración de la List es muy simple. Nosotros Python los desarrolladores suelen utilizar For looping. Vamos a hacerlo:

Entonces, para cada libro en la estantería, podemos ( podemos hacer todo con él ) imprimirlo. Bastante simple e intuitivo. Eso es Python.

Para una estructura de datos hash, también podemos usar el ciclo for , pero aplicamos la key :

Este es un ejemplo de cómo usarlo. Para cada key en el dictionary , print la key y su value correspondiente.

Otra forma de hacerlo es usar el método iteritems .

Nombramos los dos parámetros como key y value , pero no es necesario. Podemos nombrarles cualquier cosa. Vamos a verlo:

Podemos ver que utilizamos el atributo como un parámetro para la key del Dictionary , y funciona correctamente. ¡Estupendo!

Clases y objetos

Un poco de teoría:

Los objetos son una representación de objetos del mundo real como automóviles, perros o bicicletas. Los objetos comparten dos características principales: datos y comportamiento .

Los automóviles tienen datos, como número de ruedas, número de puertas y capacidad de asientos. También exhiben comportamiento : pueden acelerar, detenerse, mostrar cuánto combustible queda, y muchas otras cosas.

Identificamos datos como atributos y comportamiento como métodos en programación orientada a objetos. De nuevo:

Datos ? Atributos y Comportamiento ? Métodos

Y una clase es el modelo a partir del cual se crean los objetos individuales. En el mundo real, a menudo encontramos muchos objetos del mismo tipo. Como autos. Todos de la misma marca y modelo (y todos tienen un motor, ruedas, puertas, etc.). Cada auto se construyó con el mismo conjunto de planos y tiene los mismos componentes.

Modo de programación orientada a objetos de Python: ON

Python, como un lenguaje de programación orientado a objetos, tiene estos conceptos: clase y objeto .

Una clase es un modelo, un modelo para sus objetos.

Entonces, nuevamente, una clase es solo un modelo, o una forma de definir atributos y comportamiento (como hablamos en la sección de teoría). Como ejemplo, una clase de vehículo tiene sus propios atributos que definen qué objetos son vehículos. La cantidad de ruedas, el tipo de tanque, la capacidad de asientos y la velocidad máxima son atributos de un vehículo.

Con esto en mente, veamos la sintaxis de Python para las clases :

Definimos clases con una declaración de clase, y eso es todo. Fácil, ¿no?

Los objetos son instancias de una clase . Creamos una instancia al nombrar la clase.

Aquí el car es un objeto (o instancia) de la clase Vehicle .

Recuerde que nuestra clase de vehículo tiene cuatro atributos : número de ruedas, tipo de tanque, capacidad de asientos y velocidad máxima. Establecemos todos estos atributos al crear un objeto de vehículo. Así que aquí, definimos nuestra clase para recibir datos cuando lo inicia:

Usamos el método init . Lo llamamos un método constructor. Entonces cuando creamos el objeto del vehículo, podemos definir estos atributos . Imagine que amamos el modelo S de Tesla, y queremos crear este tipo de objeto . Tiene cuatro ruedas, funciona con energía eléctrica, tiene espacio para cinco asientos y la velocidad máxima es de 250 km / hora (155 mph). Vamos a crear este objeto:

Cuatro ruedas + "tipo de tanque" eléctrico + cinco asientos + 250 km / hora de velocidad máxima.

Todos los atributos están establecidos. Pero, ¿cómo podemos acceder a los valores de estos atributos? Enviamos un mensaje al objeto preguntando sobre ellos . Lo llamamos un método . Es el comportamiento del objeto . Implementémoslo:

Esta es una implementación de dos métodos: number_of_wheels y set_number_of_wheels. Lo llamamos getter & setter . Porque el primero obtiene el valor del atributo, y el segundo establece un nuevo valor para el atributo.

En Python, podemos hacer eso usando @property ( decorators ) para definir getters y setters . Veámoslo con el código:

Y podemos usar estos métodos como atributos:

Esto es ligeramente diferente a definir los métodos. Los métodos funcionan como atributos. Por ejemplo, cuando establecemos la nueva cantidad de ruedas, no aplicamos dos como parámetro, sino que establecemos el valor 2 en number_of_wheels . Esta es una forma de escribir el getter pythonic y el código setter .

Pero también podemos usar métodos para otras cosas, como el método " make_noise ". Vamos a verlo:

Cuando llamamos a este método, simplemente devuelve una cadena " VRRRRUUUUM " . "