Introducción: Python es un lenguaje de programación de alto nivel, interpretado y famoso por su legibilidad. Se utiliza en plataformas como Instagram y Netflix. Es multiparadigma, dinámico, multiplataforma, y está gestionado por la Python Software Foundation bajo una licencia de código abierto.
Historia: Guido van Rossum creó Python a finales de los 80, y su primera versión fue lanzada en 1991. Ha evolucionado incorporando características de otros lenguajes, alcanzando la versión 1.0 en 1994 y la 2.0 en 2000. En 2001, su licencia se hizo compatible con GPL, y van Rossum fue galardonado por su contribución al software libre.
Filosofía: Python favorece la simplicidad, la legibilidad y la practicidad, alineándose con la filosofía Unix. "El Zen de Python" de Tim Peters, incluido como un "huevo de pascua" desde la versión 2.1.2, destaca la belleza, la claridad y la explicitud en el código.
Tipos de datos: Entre ellos están str, bytes, list, tuple, set, frozenset, dict, int, float, complex y bool. Las estructuras de datos pueden ser mutables o inmutables.
Condicionales: Las sentencias if, elif y else permiten ejecutar bloques de código basados en condiciones. En Python 3.10, la sentencia match-case introduce una comparación estructural avanzada.
Bucles: for se utiliza para recorrer objetos iterables, ejecutando un bloque de código para cada elemento, mientras que while ejecuta un bloque siempre que una condición sea verdadera.
Diccionarios: Definidos con {}, contienen pares clave-valor, son mutables y sus claves deben ser inmutables. Es posible asociar operaciones a claves mediante lambdas para optimizar la selección de operaciones.
Conjuntos: Se crean con set(items) y no mantienen orden ni permiten duplicados. Son útiles para operaciones de intersección, unión, diferencia y diferencia simétrica.
Listas por comprensión: Permiten definir listas de manera compacta y concisa, realizando operaciones sobre iterables.
Funciones: Definidas con def, pueden recibir parámetros fijos, *args (argumentos variables) y **kwargs (argumentos por clave). Las funciones lambda permiten definir funciones breves.
Clases: Definidas con class, contienen métodos y atributos. El método init se utiliza para inicializar instancias, y los atributos se declaran con self. Las clases en Python no cuentan con un encapsulamiento estricto.