Promoción verano: 6 meses de acceso a todos los cursos online con el 50% de descuento

En este tutorial interactivo vamos a aprender Python online. Vamos a ver las características principales en varias secciones y veremos un ejemplo en cada sección para poner en práctica la teoría. Es un curso de python gratis para principiantes, ya que no entraremos en profundidad en todas las librerías que ofrece Python.

Como sugerencia, te recomiendo algunos libros de html, libros de css, libros de javascript y libros de Python que sirven para entrar en detalle en estas materias.

El lenguaje Python fue creado por Guido van Rossum a finales de los años 80, y hasta entonces no ha parado de incrementar su popularidad, hasta situarse en el Top 10 de los lenguajes de programación más utilizados hoy en día.
Principalmente se creó para ser un lenguaje interpretado y multiparadigma. Se diseñó para programar orientado a objetos, o funcional. Se creó como un sucesor del lenguaje ABC con mejoras a nivel de tratamiento de excepciones y interacción con el sistema operativo Amoeba.

El lenguaje Python simplifica en gran parte llevar la contabilidad de punteros y usa un tipado dinámico. Dispone de múltipres librerias para trabajar con ficheros y redes (como http).

Características

Es un lenguaje de programación estructurado y interpretado. Es decir, a partir de un código fuente, se debe ejecutar con el comando python. Está disponible para Windows, Mac OS, Linux y Raspberry.

Una característica es que Python no usa las llaves { } para agrupar el código, sino que usa la indentación, por ejemplo en los bucles for,  y en los if.

En principio se puede usar con programación orientada a objetos aunque se puede usar como procedural muy básico.
A nivel de concurrencia usa threads, haciendo que la programación concurrente sea más fácil que en C. Así pues dispone de librerías para realizar varias tareas simultaneas en un sólo programa.
Se estructura en paquetes (package), y existe un método main, que es el punto de entrada de un programa.

El ejemplo típico de HolaMundo

La secuencia que debemos realizar para ejecutar cada ejemplo es:

Hacer click en el ejemplo HolaMundo.py .

Nota: Si el botón está desactivado , no puede realizar ninguna acción.

Para empezar veamos el típico HolaMundo. A la derecha vemos un explorador de archivos ordenado alfabéticamente. Haz click en el fichero HolaMundo.py del explorador de archivos para abrir el fichero en el editor.

La estructura inicial del programa más sencillo es la que podemos ver en el editor Python a la derecha. En esta versión gratuita del tutorial interactivo de Python, casi todas las opciones están deshabilitadas, pero se pueden ver y ejecutar todos los ejemplos del tutorial online.

#Ejemplo 1
#El tipico Hola mundo!

def main():
    print("Hola mundo!")

main()

Estas líneas representan comentarios. También se puede usar el comentario en una sola línea:

#comentarios en una linea

Se puede ver que las sentencias no acaban todas en punto y coma ; y los bloques no se engloban entre llaves {}

Ejecutar el programa

Prueba a abrir el HolaMundo.py y haz click en el botón Ejecutar.

A continuación veremos en la zona inferior de mensajes el resultado de la ejecución: Hola mundo!

Si estuvieramos en Windows o UNIX, en el Símbolo del sistema o en el terminal de texto, para ejecutar el programa habría que escribir python Nombre.py y nos mostraría por la pantalla: Hola mundo!

Los tipos de datos primitivos son (True/False), que indica verdadero o falso; números enteros; y números con coma flotante. También números complejos (3 + 5j). No se especifica el tipo de valor al crear la variable.

Existen además las listas que almacenan datos de diferente tipos lis = ['pala',4] ; los diccionarios que almacenan parejas de clave/valor y cadenas de texto: str ="Hola" que pueden ir con comillas simples o dobles.

Existen varios operadores: para asignar un valor (x=3), para operar con números (+,-,*,/,**,//,%), para comparar (==, !=, <, >, <=, >=), para lógica (and, or, not), y para operaciones de bit (&,|,^,<<, >>).

Para escribir comentarios se pueden poner en una sola linea (#comentario), o en varias lineas """ comentario comentario """

Python también es un lenguaje orientado a objetos. Para ello las clases se organizan en paquetes que se definen al principio del código fuente (package) siguiendo una convención inversa al dominio. Por ejemplo si creamos una app en nuestro domininio sería (online.tutoriales.app). Para utilizar estos paquetes desde otras clases se usa (import paquete.clase) o (import paquete.*) para importar todas las clases que contiene el paquete.

Una clase consta de propiedades y métodos. Las propiedades son variables primitivas o otras clases, y los métodos definen el comportamiento que se realiza con esas propiedades. El esquema de un método es:

Para definir una clase se realiza del siguiente modo:

class MiClase:
    sentencias 
    sentencias 
    sentencias 

Cuando tenemos definida una clase, podemos crear instancias de ella, es lo que llamamos objetos de esa clase. Se realiza mediante la palabra new. Luego podemos acceder a sus propiedades y métodos con el punto .

obj = MiClase()

A veces se utilizan varios métodos con el mismo nombre, que suelen hacen lo mismo (aunque pueden hacer otras cosas) pero con argumentos diferentes, es lo que se llama "sobrecargar" un método.

Constructor

Habitualmente para inicializar un objeto se usa el constructor. El constructor es un método especial, que se llama __init()__ y que no devuelve ningún valor. Se encarga de inicializar las propiedades de la clase. También se puede sobrecargar el constructor para que funcione con argumentos diferentes.

Visibilidad

Aunque Python no usa modificadores para definir la visibilidad de una variable o de un método, se suele usar una convención: el subrallado _ para definir una variable, función privada.

Herencia

Una clase puede heredar las propiedades y los métodos de otra clase mediante la definición de las clases entre paréntesis. Es lo que se llama una subclase. Esto es útil para no duplicar código y para evitar errores. Se permite heredar de varias clases al mismo tiempo. Hay que comentar que los constructores no se heredan entre ellas.

Así por ejemplo podemos definir una clase "Vehículo" y subclases "Coche" y "Moto".

Ejemplo de objetos

Abre el ejemplo Objetos.py, y ejecuta para ver el resultado.

Podemos encontrar dos tipos de errores: los de parseo y las excepciones. Los errores de parseo son errores de syntaxis al ejecutar el intérprete de Python y nos avisa del error con una flechita. Los errores en tiempo de ejecución se denominan excepciones.

Cuando salta un Error el flujo del programa se acaba. Estos pueden ocurrir por ejemplo cuando se accede a un método de un objeto nulo, un fichero que no se encuentra, un error de comunicaciones, etc. Nosotros podemos definir nuestras propias excepciones para controlar el flujo del programa.

Para tratar las excepciones se utilizan las palabras try: except: else: y raise.

En el try: se pone el código que puede lanzar errores

En el except se captura el tipo de Error concreto, (o varios).

Y en else se pone código que se ejecuta si el try no lanza un error.

La palabra raise se especifica a nivel de método para indicar que lanza ese error hacia arriba, ya que si una Exception no se captura, se lanza al método que nos ha invocado préviamente.

import sys

try:
    f = open('myfile.txt')
    s = f.readline()
    i = int(s.strip())
except OSError as err:
    print("OS error: {0}".format(err))
except ValueError:
    print("Error al convertir dato a un entero.")
except:
    print("Error no esperado:", sys.exc_info()[0])
raise

Si te gusta este tutorial, pulsa este botón de Me gusta
Apretando el botón de gracias se permite minar monero en el navegador. Es una alternativa anónima para colaborar con este sitio web sin tener que soportar molestos anuncios o Ads.
El proceso dura menos de un minuto, no es peligroso, ni contiene virus.
Una vez realizado permite el acceso al tutorial interactivo de nuevo.
No funciona desde móvil.
Qué es esto?

Python dispone de varias librerías para el tratamiento de entrada y salida (E/S).
También dispone de paquetes específicos para E/S de ficheros con JSOn, para guardar estructuras de datos con JSON.

E/S con ficheros

Hay varios tipos de métodos de E/S. open retorna un objeto fichero, se le pasa el parámetro nombre de fichero y modo (r - lectura, w - escritura, a - append.

Se suele usar la sentencia with para abrir recursos y luego liberarlos. Para leer datos se usa el método read() y para leer líneas se usa readline(). Para grabar datos se usa el método write()

with open('fichero') as f:
    read_data = f.read()

Guardar datos con JSON

Para trabajar con ficheros JSON se suele usar import json.

Se usa el método dump para guardar el objeto a un fichero de texto y load para cargarlo de disco. Estos métodos soportan listas y diccionarios.

//x es un objeto cualquier y f un descriptor de fichero
json.dump(x, f)
x = json.load(f)

Para verlo en funcionamiento abre el DatosJSON.py.

Si te gusta este tutorial, pulsa este botón de Me gusta
Apretando el botón de gracias se permite minar monero en el navegador. Es una alternativa anónima para colaborar con este sitio web sin tener que soportar molestos anuncios o Ads.
El proceso dura menos de un minuto, no es peligroso, ni contiene virus.
Una vez realizado permite el acceso al tutorial interactivo de nuevo.
No funciona desde móvil.
Qué es esto?

El lenguaje Python, permite realizar accesos a urls de Interet, y a los protocoles de Internet como el smtp.

Las clases principales se encuentran en el paquete urllib y smtplib.

URLs

Para localizar y acceder a cualquier recurso en Internet podemos usar el método urlopen. Uno de los protocolos más conocidos es http. Para crear un objeto URL podemos proceder así:

from urllib.request import urlopen
with urlopen('http://tutoriales.online') as response:
   for line in response:
       line = line.decode('utf-8')  
       print(line)

Ejemplo para leer una URL

Abre el ejemplo LeeURL.py, y ejecuta para ver el resultado.

SMTP

A veces necesitamos crear aplicaciones para tratar con el protocolo smtp y poder enviar correos.

Habitualmente se crea un objeto server y se invoca al método sendmail.

import smtplib
 
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login("EMAIL", "PASSWORD")
  
msg = "Tu mensaje de correo a enviar"
server.sendmail("EMAIL", "EMAIL DESTINATARIO", msg)
server.quit()

Ejemplo de correo

Abre el ejemplo EnviarCorreo.py, y ejecuta para ver el resultado.

Si te gusta este tutorial, pulsa este botón de Me gusta
Apretando el botón de gracias se permite minar monero en el navegador. Es una alternativa anónima para colaborar con este sitio web sin tener que soportar molestos anuncios o Ads.
El proceso dura menos de un minuto, no es peligroso, ni contiene virus.
Una vez realizado permite el acceso al tutorial interactivo de nuevo.
No funciona desde móvil.
Qué es esto?

Una de las funcionalidades que podemos usar para realizar tareas de fondo son los threads. Se usa el paquete threading para la gestión de los threads.

En esta sección sólo vamos a dar cuatro pinceladas de la concurrencia, ya que se podría dedicar un tutorial entero sólo a ello.

Para crear una clase que sea capaz de ejecutar código en un proceso aparte, se crea la clase que herede de threading.Thread. La clase debe implementar un método __run(self)__. Una vez definida esa clase se crea un objeto y se llama al método start().

Podemos ver el siguiente ejemplo para crear una clase que es un thread:

import threading, zipfile

class AsyncZip(threading.Thread):
    def __init__(self, infile, outfile):
        threading.Thread.__init__(self)
        self.infile = infile
        self.outfile = outfile

    def run(self):
        f = zipfile.ZipFile(self.outfile, 'w', zipfile.ZIP_DEFLATED)
        f.write(self.infile)
        f.close()
        print('Finalizado el proceso zip de:', self.infile)

background = AsyncZip('mydata.txt', 'myarchive.zip')
background.start()
print('El main continua ejecutandose en primer plano.')

background.join()    # Espera que la tarea en segundo plano finalice 
print('El main espera hasta que finalice la tarea de fondo.')

Ejemplo con un thread

A continuación abre el ejemplo Multitarea.py. Luego ejecuta la clase Multitarea que es la que contiene el método main.

Si te gusta este tutorial, pulsa este botón de Me gusta
Apretando el botón de gracias se permite minar monero en el navegador. Es una alternativa anónima para colaborar con este sitio web sin tener que soportar molestos anuncios o Ads.
El proceso dura menos de un minuto, no es peligroso, ni contiene virus.
Una vez realizado permite el acceso al tutorial interactivo de nuevo.
No funciona desde móvil.
Qué es esto?

 ◂ 
 ▸