Python


David Bohórquez, M.Sc.
Es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible.
Se trata de un lenguaje de programación multiparadigma , ya que soporta orientación a objetos , programación imperativa y programación funcional .
¿Qué es Python?

Python fue creado a finales de los ochenta por Guido Van Rossum.
El nombre del lenguaje proviene de la afición de su creador por los humoristas británicos Monty Python.
Cuenta con el Zen de Python que son 20 principios de software que influyen en el diseño del lenguaje.
Los PEP son un documento que proporciona información, describe o propone una característica para el lenguaje.
Una vista rápida

Zen de Python
>>> import this """ The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those! """
El Zen de Python inspira a programadores de todo el mundo a la hora de crear software. El Zen es una lista de 20 principios.
Zen de Python (10/20)
-
Bello es mejor que feo.
-
Explícito es mejor que implícito.
-
Simple es mejor que complejo.
-
Complejo es mejor que complicado.
-
Sencillo es mejor que anidado.
-
Espaciado es mejor que denso.
-
La legibilidad es importante.
-
Los casos especiales no son lo suficientemente especiales para romper las reglas.
-
Lo práctico le gana a la pureza.
-
Los errores no deben pasar en silencio.
A menos que sean silenciados.
Zen de Python (20/20)
-
Respecto a la ambigüedad, rechazar la tentación de adivinar.
-
Debe haber una, y preferiblemente sólo una, manera obvia de hacerlo.
-
Aunque esa manera puede no ser obvia en un primer momento a menos que seas holandés.
-
Ahora es mejor que nunca. Aunque “nunca” es a menudo mejor que “ahora mismo”.
-
Si la aplicación es difícil de explicar, es una mala idea.
-
Si la aplicación es fácil de explicar, puede ser una buena idea.
-
Los espacios de nombres son una gran idea.
- Python permite dividir el programa en módulos reutilizables.
- Viene con una gran colección de módulos estándar.
- También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, Sockets y hasta interfaces a GUI como Tk, GTK, Qt entre otros.
- No es necesario compilar.
- El intérprete se puede utilizar de modo interactivo, lo que facilita experimentar con características del lenguaje, escribir programas desechables o probar funciones durante el desarrollo del programa.
Características
- Desarrollo Web
- Desarrollo de software
- Análisis de datos y Big Data
- Ciencia de datos
- Hacking Ético
- Aplicaciones de escritorio
- Juegos
- Procesamiento de imágenes
- Machine Learning
- Deep Learning
Campos de aplicación



Ranking
Python es un lenguaje multiplataforma y en su sitio web oficial podemos encontrar los diferentes instaladores para el sistema que sea de nuestra preferencia.
https://www.python.org/downloads/
En la mayoría de sistemas Linux ya viene instalado Python de manera nativa.
Instalación
Source code: código escrito en el lenguaje Python.
Interpreter: procesador que ejecuta instrucciones de alto nivel.
Compiler: compilador que transforma el código de Python en byte code.
Virtual machine: ambiente donde se ejecuta el byte code y es traducido al lenguaje máquina.
El interprete
El interprete

Para activar el modo interactivo del interprete solo debemos abrir nuestra terminal y escribir python3
El interprete

Nivel
1
Estructura del lenguaje
Los tipos de dato estándar de Python son los siguientes.
Tipos de datos

Adicionalmente Python tiene otros 2 tipos de dato.
Tipos de datos

Debemos tener en cuenta que en Python todos los tipos de dato son un objeto.
Al asignarlos a una variable podremos hacer uso de sus distintos métodos y atributos.
En Python para ingresar datos (entrada) y mostrarlos (salida) en pantalla podemos utilizar input() y print().
E/S estándar

Una variable es un objeto que esta almacenado en memoria.
Variables

En el ejemplo podemos ver la variable saludo la cual es de tipo str y tiene una serie de métodos disponibles correspondientes a un objeto de su tipo.
Variables

Asignación simple
Asignación multiple

Palabras clave
Python tiene 33 palabras reservadas para su propio uso:

En Python las constantes son escritas en mayúscula y se utiliza underScore ( _ ) para separar las palabras.
Constantes
Nuestras constantes no serán inmutables, pero por convención se declaran en mayúscula para tener una mejor legibilidad del código.

Para realizar la asignación de una variable disponemos de 8 operadores que nos facilitaran realizar algunos cálculos matemáticos.
Operadores de asignación

Podemos realizar cálculos matemáticos utilizando los siguientes operadores.
Operadores aritméticos

El orden de precedencia de ejecución de los operadores aritméticos es:
- Términos entre paréntesis.
- Potenciación y raíces.
- Multiplicación y división, división entera, módulo.
- Suma, resta.
- Los operadores con igual precedencia son evaluados de izquierda a derecha.
Los valores booleanos son resultado del uso de un operador relacional.
Operadores relacionales

Estos operadores nos devolverán un resultado booleano el cual podemos utilizar dentro de nuestros bloques condicionales de código.
Operadores lógicos

En Python podemos formatear cadenas usando el % o el método format().
Formateo de cadenas

Listas
Las listas en Python son un tipo de dato que permite almacenar datos de cualquier tipo. Son mutables y dinámicas, lo cual es la principal diferencia con los sets y las tuplas. Podemos guardar en ellas prácticamente lo que sea. Si vienes de otros lenguajes de programación, se podría decir que son similares a los arrays.
lista = [1, 2, 3, 4]
lista = list("1234")
lista = [1, "Hola", 3.67, [1, 2, 3]]
Propiedades de las Listas
Algunas propiedades de las listas:
- Son ordenadas, mantienen el orden en el que han sido definidas
- Pueden ser formadas por tipos de datos arbitrarios
- Pueden ser indexadas con [i].
- Se pueden anidar, es decir, meter una dentro de la otra.
- Son mutables, ya que sus elementos pueden ser modificados.
- Son dinámicas, ya que se pueden añadir o eliminar elementos.
Acceder y modificar Listas
Si tenemos una lista a con 3 elementos almacenados en ella, podemos acceder a los mismos usando corchetes y un índice, que va desde 0 a n-1 siendo n el tamaño de la lista.
a = [90, "Python", 3.87] print(a[0]) #90 print(a[1]) #Python print(a[2]) #3.87 # ültimo dato print(a[-1]) #3.87 # Penúltimo dato print(a[-2]) #Python # Modificar valor de la lista a[2] = 1 print(a) #[90, 'Python', 1]
Listas anidadas
Podemos tener listas anidadas, es decir, una lista dentro de otra. Incluso podemos tener una lista dentro de otra lista y a su vez dentro de otra lista. También es posible crear sublistas más pequeñas de una más grande.
x = [1, 2, 3, ['p', 'q', [5, 6, 7]]] print(x[3][0]) #p print(x[3][2][0]) #5 print(x[3][2][2]) #7
l = [1, 2, 3, 4, 5, 6] print(l[0:2]) #[1, 2] print(l[2:6]) #[3, 4, 5, 6] # Modificar varios valores l = [1, 2, 3, 4, 5, 6] l[0:3] = [0, 0, 0] print(l) #[0, 0, 0, 4, 5, 6]
Métodos Listas (1/3)
El método append() añade un elemento al final de la lista.
l = [1, 2] l.append(3) print(l) #[1, 2, 3]
l = [1, 2] l.extend([3, 4]) print(l) #[1, 2, 3, 4]
El método extend() permite añadir una lista a la lista inicial.
l = [1, 3] l.insert(1, 2) print(l) #[1, 2, 3]
El método insert() añade un elemento en una posición o índice determinado. insert(<index>, <obj>)
Métodos Listas (2/3)
El método remove() recibe como argumento un objeto y lo borra de la lista.
l = [1, 2, 3] l.remove(3) print(l) #[1, 2]
l = [1, 2, 3] l.pop() print(l) #[1, 2]
El método pop() elimina por defecto el último elemento de la lista, pero si se pasa como parámetro un índice permite borrar elementos diferentes al último.
El método reverse() inverte el órden de la lista.
l = [1, 2, 3] l.reverse() print(l) #[3, 2, 1]
Métodos Listas (3/3)
El método sort() ordena los elementos de menor a mayor por defecto.
l = [3, 1, 2] l.sort() print(l) #[1, 2, 3]
l = [3, 1, 2] l.sort(reverse=True) print(l) #[3, 2, 1]
Y también permite ordenar de mayor a menor si se pasa como parámetro reverse=True.
El método index() recibe como parámetro un objeto y devuelve el índice de su primera aparición.
l = ["Periphery", "Intervals", "Monuments"] print(l.index("Intervals")) # 1
Tuplas
Las tuplas en Python son un tipo o estructura de datos que permite almacenar datos de una manera muy parecida a las listas, con la salvedad de que son inmutables.
tupla = (1, 2, 3) print(tupla) #(1, 2, 3)
tupla = (1, 2, 3) #tupla[0] = 5 # Error! TypeError
las tuplas son tipos inmutables, lo que significa que una vez asignado su valor, no puede ser modificado. Si se intenta, tendremos un TypeError.
Métodos de las Tuplas
El método count() cuenta el número de veces que el objeto pasado como parámetro se ha encontrado en la lista.
l = (1, 1, 1, 3, 5) print(l.count(1)) #3
l = (7, 7, 7, 3, 5) print(l.index(5)) #4
El método index() busca el objeto que se le pasa como parámetro y devuelve el índice en el que se ha encontrado.
Métodos de las Tuplas
El método count() cuenta el número de veces que el objeto pasado como parámetro se ha encontrado en la lista.
l = (7, 7, 7, 3, 5) print(l.index(5)) #4
Diccionarios
Un diccionario en Python es una colección de elementos, donde cada uno tiene una llave key y un valor value. Los diccionarios se pueden crear con llaves { } separando con una coma cada par key: value. En el siguiente ejemplo tenemos tres keys que son el nombre, la edad y el documento.
d1 = { "Nombre": "Sara", "Edad": 27, "Documento": 1003882 } print(d1)
Propiedades de los Diccionarios
Algunas propiedades de los diccionario en Python son las siguientes:
- Son dinámicos, pueden crecer o decrecer, se pueden añadir o eliminar elementos.
- Son indexados, los elementos del diccionario son accesibles a través del key.
- Y son anidados, un diccionario puede contener a otro diccionario en su campo value.
Acceder y modificar elementos
Se puede acceder a sus elementos con [ ] o también con la función get()
print(d1['Nombre']) #Sara print(d1.get('Nombre')) #Sara
Para modificar un elemento basta con usar [ ] con el nombre del key y asignar el valor que queremos.
d1['Nombre'] = "Laura" print(d1) #{'Nombre': Laura', 'Edad': 27, 'Documento': 1003882}
Si el key al que accedemos no existe, se añade automáticamente.
d1['Direccion'] = "Calle 123" print(d1) #{'Nombre': 'Laura', 'Edad': 27, 'Documento': 1003882, 'Direccion': 'Calle 123'}
Estructuras de control
if es una condicional que se utiliza para la toma de decisiones, significa que es ejecutada si se cumple la expresión.
else significa de lo contrario y no tiene una expresión de evaluación.
Condicional if

elif es una condicional que nos permite encadenar mas expresiones de evaluación.
Condicional elif

Expresiones condicionales

Estas expresiones nos permitirán enriquecer nuestros bloques condicionales de código.
También conocidos como bucles nos permiten ejecutar múltiples veces una porción de código.
Ciclo while
Blucle While
El código se ejecutara mientras se cumpla la condición (que el valor sea menor a 10)

Dentro de las estructuras de control podemos utilizar sentencias utilitarias como continue y break.
Sentencias continue y break
La sentencia continue le indica al bucle que pase a la siguiente iteración, el código que este después de continue ya no sera ejecutado.

Sentencia break
La sentencia break le indica al bucle que culmine la iteración actual y que las posteriores ya no se deben ejecutar.

Estructuras de control ciclo FOR
El bucle FOR itera sobre los items de cualquier tipo de secuencia (una lista, una cadena de caracteres, etc)

Estructuras de control
ciclo FOR

Funciones
Es un bloque de código que recibe 0 o más argumentos de entrada.
Esto nos permite segmentar un programa y tener código reutilizable.

Funciones
Una función puede recibir de manera dinámica argumentos (args) y/o también pares de clave y valor (kwargs)

Nivel
2
Paradigma de programación
Programación estructurada
Este paradigma se basa en utilizar únicamente funciones, bucles y condicionales.
Además las sentencias son ejecutadas en el orden escrito.

Prog. Orientada a Objetos

Prog. Orientada a Objetos

Prog. Orientada a Objetos
class Perro: def __init__(self, nombre, edad, raza): print(f"Creando perro {nombre}") # Atributos de la instancia self.nombre = nombre self.edad = edad self.raza = raza self.sexo = sexo # Métodos def ladrar(self): print("Guaw! Guaw! Guaw!") def correr(self, pasos): print(f"La distancia que a recorrido el perro es de {pasos} pasos") # Instancia mi_perro = Perro("Tango", "2 años", "Border Collie") mi_perro.ladrar() mi_perro.correr(100) print(f"La edad del perro {mi_perro.nombre} es {mi_perro.edad} años")
Prog. Orientada a Objetos
Este paradigma se basa en utilizar clases, propiedades y métodos. Como resultado de una clase instanciada obtenemos un objeto.

Prog. Orientada a Objetos
Este paradigma se basa en utilizar clases, propiedades y métodos. Como resultado de una clase instanciada obtenemos un objeto.

Prog. Orientada a Objetos
Algunas de las características de la programación orientada a objetos (POO) son: herencia, polimorfismo, composición.

La herencia le da la capacidad a una clase de heredar atributos o métodos de otra clase, en este caso Hombre hereda el método hablar().
Prog. Orientada a Objetos
El polimorfismo nos permite reescribir el comportamiento de un método heredado.
Hay que tener en cuenta que no existe polimorfismo si no hay herencia.

Prog. Orientada a Objetos
A un objeto compuesto por otro se le llama composición .

Prog. Orientada a Objetos
La encapsulación nos permite limitar el nivel de acceso de nuestros objetos.

Excepciones y Manejo de errores
Sintaxis de Try - Except
La sintaxis básica es la siguiente:
try: # Codigo a ejecutar # Pero podria haber errores en este bloque except <tipo de error>: # Haz esto para manejar la excepcion # El bloque except se ejecutara si el bloque try lanza un error else: # Esto se ejecutara si el bloque try se ejecuta sin errores finally: # Este bloque se ejecutara siempre
Excepciones
Las excepciones en Python son una herramienta muy potente . Se trata de una forma de controlar el comportamiento de un programa cuando se produce un error.
a = 5 b = 0 try: c = a/b print("El resultado de la división es: ", c) except: if b == 0: print("No se puede dividir por cero")
Excepciones
El bloque dentro de try: es ejecutado y, si retorna cualquier error, entonces ejecuta el bloque contenido en except: y continúa su ejecución. En caso de que no haya ningún error el programa se ejecuta correctamente ignorando ese bloque.
dividendo = "3" divisor = 2 try: resultado = dividendo/divisor except ZeroDivisionError: if divisor == 0: print("No puedes dividir por cero") except TypeError: print("El tipo de dato no es el correcto") else: print("La división resulta: ", resultado)
Manejo de archivos
Manejo de archivos
La función clave para trabajar con archivos en Python es la función open()
,esta función toma dos parámetros; nombre de archivo y modo. Hay cuatro métodos (modos) diferentes para abrir un archivo:
"r"
- Leer - Valor por defecto. Abre un archivo para lectura, envía un error si el archivo no existe.
"a" - Agregar: abre un archivo para agregar, crea el archivo si no existe.
"w" - Escribir: abre un archivo para escribir, crea el archivo si no existe.
"x" - Crear: crea el archivo especificado, devuelve un error.r si el .archivo existe
Método read()
Con open() tendremos ya en f el contenido del documento listo para usar, y podemos imprimir su contenido con read().
f = open("demofile.txt", "r") print(f.read())
Método readline()
Es posible también leer un número de líneas determinado y no todo el fichero. Para ello hacemos uso de la función readline(). Cada vez que se llama a la función, se lee una línea.
f = open("demofile.txt", "r") print(f.readline())
Nivel
4
Programación Funcional
Programación funcional
Este paradigma trabaja principalmente con funciones y datos inmutables.

Las funciones de orden superior son aquellas que pueden tomar como parámetro a otra función.
Con Python podemos ejecutar procesos de manera síncrona y asíncrona (a partir de la versión 3.5).
Procesos asíncronos

La forma de ejecutar procesos Síncronos es muy sencilla y ya conocida.

Procesos asíncronos
Para la ejecución de procesos Asíncronos debemos utilizar un Bucle de eventos.

Procesos asíncronos
Para la ejecución de procesos Asíncronos debemos utilizar un Bucle de eventos.
List Comprehensions

Para la ejecución de procesos Asíncronos debemos utilizar un Bucle de eventos.
Dictionary Comprehensions
def run(): my_dict = {i:round(i**0.5,2) for i in range(1,1001)} print(my_dict) if __name__=='__main__': run()
Para la ejecución de procesos Asíncronos debemos utilizar un Bucle de eventos.
Funciones Lambda
palindrome = lambda string: string == string[::-1] print(palindrome("ana"))
Nivel 5
Paquetes
y
bibliotecas externas
Python Package Index (PyPI) es un repositorio de software para el lenguaje de programación Python.
The Python Package Index (PyPI)

pyttsx3 es una biblioteca de texto a voz multiplataforma. La principal ventaja de utilizar esta biblioteca para la conversión de texto a voz es que funciona sin conexión. Para instalar este módulo, escriba el siguiente comando en la terminal.
pip install pyttsx3
Nos permite convertir audio en texto para su posterior procesamiento. Para instalar este módulo, escriba el siguiente comando en la terminal.
pip install SpeechRecognition
Es una biblioteca de Python con varias características útiles. Es fácil de usar y no requiere ninguna configuración adicional. Actualmente, es una de las bibliotecas más populares para la automatización de WhatsApp y YouTube. Las nuevas actualizaciones se lanzan con frecuencia con nuevas funciones y correcciones de errores.
pip install pywhatkit
Proporciona una interfaz de alto nivel que permite la visualización de documentos basados en la Web para los usuarios. Para instalar este módulo, escriba el siguiente comando en la terminal.
pip install webbrowser
Se utiliza para obtener información del sitio web de Wikipedia. Para instalar este módulo, escriba el siguiente comando en la terminal.
pip install wikipedia
Se utiliza para capturar imágenes desde la cámara. Para instalar este módulo, escriba el siguiente comando en la terminal.
pip install ecapture
Python-tesseract es una herramienta de reconocimiento óptico de caracteres (OCR) para python. Es decir, reconocerá y “leerá” el texto incrustado en las imágenes.
pip install pytesseract
Googletrans es una biblioteca de python gratuita e ilimitada que implementó la API de Google Translate. Esto utiliza la API Ajax de Google Translate para realizar llamadas a métodos tales como detectar y traducir.
pip install googletrans
Es una biblioteca de imágenes de Python agrega capacidades de procesamiento de imágenes. Esta biblioteca proporciona soporte extenso de formato de archivo, una representación interna eficiente y capacidades de procesamiento de imágenes bastante potentes. La biblioteca de imágenes principales está diseñada para un acceso rápido a los datos almacenados en algunos formatos de píxeles básicos.
pip install pillow
Este módulo se usa para construir GUI. Este módulo viene integrado con Python.

Documentación
GitBook es una plataforma en línea que permite a los usuarios crear y publicar libros electrónicos y documentación técnica de forma colaborativa. Utiliza el sistema de control de versiones Git para gestionar el contenido y permite la integración con herramientas de terceros como GitHub, Bitbucket y GitLab.

Read the Docs simplifica la documentación del software al automatizar la creación, el control de versiones y el alojamiento de sus documentaciones por usted. Tutorial

Python
By davidbcaro
Python
Introducción a Python
- 394