Python

Introducción

Python es un lenguaje de programación de alto nivel, orientado a objetos, con una semántica dinámica integrada, principalmente para el desarrollo web y de aplicaciones informáticas. Ofrece tipificación dinámica y opciones de encuadernación dinámicas, es relativamente simple y por tanto, fácil de aprender, ya que requiere una sintaxis única que se centra en la legibilidad. Los desarrolladores pueden leer y traducir el código Python mucho más fácilmente que otros lenguajes. Por tanto, esto reduce el costo de mantenimiento y de desarrollo del programa porque permite que los equipos trabajen en colaboración sin barreras significativas de lenguaje y experimentación. Además, soporta el uso de módulos y paquetes, lo que significa que los programas pueden ser diseñados en un estilo modular y el código puede ser reutilizado en varios proyectos. Una vez se ha desarrollado un módulo o paquete, se puede escalar para su uso en otros proyectos, y es fácil de importar o exportar. Por otro lado, uno de los beneficios más importantes de Python es que tanto la librería estándar como el intérprete están disponibles gratuitamente, tanto en forma binaria como en forma de fuente.

El Zen de Python

Colección de 19 principios de software que influyen en el diseño del lenguaje de Programación Python, escritos por Tim Peters​ en junio de 1999.

# Enunciado Statement
1 Bello es mejor que feo. Beautiful is better than ugly.
2 Explícito es mejor que implícito. Explicit is better than implicit.
3 Simple es mejor que complejo. Simple is better than complex.
4 Complejo es mejor que complicado. Complex is better than complicated.
5 Plano es mejor que anidado. Flat is better than nested.
6 Espaciado es mejor que denso. Sparse is better than dense.
7 La legibilidad es importante. Readability counts.
8 Los casos especiales no son lo suficientemente especiales como para romper las reglas. Special cases aren't special enough to break the rules.
9 Sin embargo la practicidad le gana a la pureza. Although practicality beats purity.
10 Los errores nunca deberían pasar silenciosamente. Errors should never pass silently.
11 A menos que se silencien explícitamente. Unless explicitly silenced.
12 Frente a la ambigüedad, evitar la tentación de adivinar. In the face of ambiguity, refuse the temptation to guess.
13 Debería haber una, y preferiblemente solo una, manera obvia de hacerlo. There should be one-- and preferably only one --obvious way to do it.
14 A pesar de que eso no sea obvio al principio a menos que seas holandés. Although that way may not be obvious at first unless you're Dutch.
15 Ahora es mejor que nunca. Now is better than never.
16 A pesar de que nunca es muchas veces mejor que “ahora” mismo. Although never is often better than *right* now.
17 Si la implementación es difícil de explicar, es una mala idea. If the implementation is hard to explain, it's a bad idea.
18 Si la implementación es fácil de explicar, puede que sea una buena idea. If the implementation is easy to explain, it may be a good idea.
19 Los espacios de nombres son una gran idea, ¡tengamos más de esos! Namespaces are one honking great idea -- let's do more of those!

Tipos de datos básicos

¿Qué tipos de datos trae consigo Python?
En Python podemos encontrar distintos tipos de datos con diferentes características y clasificaciones. Los tipos de datos básicos de Python son los booleanos, los numéricos (enteros, punto flotante y complejos) y las cadenas de caracteres. Python también define otros tipos de datos, entre los que se encuentran:

  • Secuencias: Los tipos list, tuple y range
  • Mapas: El tipo dict
  • Conjuntos: El tipo set
  • Iteradores
  • Clases
  • Instancias
  • Excepciones
A su vez, los tipos anteriores se pueden agrupar de diferente manera. En Python el asterisco * se usa para multiplicar, replicar cadenas de texto, listas o tuplas, aceptar varios parámetros en funciones y desempaquetar listas o tuplas. El doble asterisco ** se usa para calcular potencias, aceptar varios parámetros en funciones y desempaquetar diccionarios.

Fusionar dos listas en un diccionario

Supongamos que tenemos dos listas en Python y queremos fusionarlas en forma de diccionario, donde los elementos de una lista actúan como claves del diccionario y los del otro como valores. Este es un problema frecuente que se enfrenta a menudo al escribir código en Python. Para resolver este problema, debemos considerar un par de restricciones, como los tamaños de las dos listas, los tipos de elementos en las dos listas y si hay elementos repetidos en ellas, especialmente en la que usaremos como llaves. Podemos superar eso con el uso de funciones integradas como zip.

keys_list = ['A', 'B', 'C']
values_list = ['azul', 'verde', 'rojo']

# Hay 3 formas de convertir dos listas en un diccionario
# 1.- Usando zip de Python, funciones dict
dict_method_1 = dict(zip(keys_list, values_list))

# 2.- Usando la función zip con comprensión del diccionario
dict_method_2 = {key:value for key, value in zip(keys_list, values_list)}

# 3.- Usando la función zip con un bucle
items_tuples = zip(keys_list, values_list) 
dict_method_3 = {} 
for key, value in items_tuples: 
    if key in dict_method_3: 
        pass # Para evitar repetir claves
    else: 
        dict_method_3[key] = value