Como ya os habíamos comentado anteriormente en nuestro post de mejores lenguajes de programación, Python ocupa el primer puesto. Y muy merecido, gracias a su flexibilidad, escalabilidad, y facilidad de aprendizaje. Actualmente, se encuentra entre los lenguajes de programación más solicitados por los empleadores.
Además, Python se encuentra en constante evolución, y genera cada vez más crecimiento e interés. En octubre del 2021 ha liberado su versión 3.10, y nos parece muy interesante hablar de ciertas características y trucos que podemos aprovechar con este lenguaje. ¡Vamos allá!
Nuevas características de Python
Formatted String Literals
Nos permite definir y formatear nuestros strings más cómodamente y de forma más legible. Para utilizarlo, comenzamos el string por el prefijo “f”, e incluimos entre llaves las variables y expresiones que se deben evaluar.
# Ejemplo 1
nombre = “John”
nombre_completo = f”{nombre} Doe”
#Ejemplo 2
f”{(lambda x: x*5)(15)}”
Puedes ver más detalles en el PEP 498.
“Walrus Operator” u Operador Morsa
Sirve para definir expresiones de asignación con el fin de evitar las redundancias y simplificar ciertas partes del código.
#Ejemplo 1
print(morsa := True)
#Ejemplo 2
while (accion := input(“Escribe: “)) != “salir”:
hacer(accion)
Puedes ver más detalles en el PEP 572.
Guiones bajos en literales numéricos
Facilita la lectura de números grandes mediante la adición de un guion bajo en la definición del número. También podemos formatear automáticamente los números para que se representen como strings.
#Ejemplo 1
>>> 0x_FF_FF_FF_FF
1234567890
#Ejemplo 2
>>> ‘{:_x}’.format(0xFFFFFFFF)
‘ffff_ffff’
Puedes ver más detalles en el PEP 515.
Structural Pattern Matching
Se trata de una nueva manera de construir estructuras de “switch” sin el uso de “elif” consecutivos. También añade algunas características adicionales para el matching.
#Ejemplo
match clave:
case 1:
hacer_a()
case 2:
hacer_b()
case _:
hacer_c()
Puedes ver más detalles en el PEP 634.
Eliminación de prefijos y sufijos
Función propia para eliminar sufijos y prefijos en un string.
#Ejemplo 1
>>> ‘Dice: ¡Un, dos, tres!’.removeprefix(‘Dice: ‘)
‘¡Un, dos, tres!’
#Ejemplo 2
>>> ‘Venga, ¡vamos allá!’.removesuffix(‘ allá’)
‘Venga, ¡vamos!’
Puedes ver más detalles en el PEP 616.
Operador para mezcla de diccionarios
Se ha introducido el operador union “|” y el union-in-place “|=” para mezclar dos o más diccionarios de forma limpia.
#Ejemplo 1
c = a|b
#Ejemplo 2
a |= {3: “nuevo objeto”}
Ver más detalles en el PEP 584.
Dataclasses
Se trata de un nuevo concepto de la biblioteca estándar que sirve para escribir clases con datos encapsulados. Se definen a través del @dataclass, en cualquier clase. Al definirla, Python implementa de forma automática los métodos internos.
#Ejemplo
@dataclass
class Coche:
nombre: str
consumo: float
capacidad: int
>>>a4 = Coche(‘Audi A4’, 7.2, 500)
>>>a4.consumo
7.2
Puedes ver más detalles en el PEP 557.
Operador de multiplicación de matrices
Representado por el símbolo “@”, puede multiplicar matrices de forma mucho más sencilla.
#Ejemplo
AAA = A @ A @ A
Puedes ver más detalles en el PEP 465.
Cercanía matemática
Función que recibe como argumento dos números y nos indica si son o no “cercanos”.
#Ejemplo
>>>math.isclose(1, 2)
False
>>>math.isclose(1, 0.999999997)
True
Puedes ver más detalles en el PEP 485.
Positional-Only Arguments
Ahora, se pueden especificar argumentos exclusivamente posicionales en las funciones de Python. Se puede realizar a través del símbolo “/”, que añadimos al definir la función en la lista de argumentos. De esta manera, los argumentos que preceden a “/” serán obligatoriamente posicionales, mientras que los que vayan después podrán ser nombrados.
#Ejemplo
def pos_only_arg(argumento, /):
… print(argumento)
>>>pos_only_arg(1)
1
Comandos para listas en Python
Para invertir una lista, podemos utilizar la función reverse, que sirve para datos numéricos y de cadenas presentes en la lista.
#Ejemplo
List = [“Azul”, “Rojo”, “Rosa” ]
List.reverse()
>>>print(List)
Rosa Rojo Azul
También podemos utilizar la función zip para unir muchos objetos iteradores en una sola lista.
#Ejemplo
Mes = (“Enero”, “Febrero”, “Marzo”)
Dia = (1, 2, 3)
>>>print(zip(Mes, Dia))
<zip object at 0x000001E7E785E356>
Por último, aquí podemos ver varias opciones para eliminar los elementos vacíos de una lista.
texto = “Prueba de espacios”
#Ejemplo 1
str_list = texto.split(“ ”)
#Ejemplo 2
str_list = filter(None, str_list)
#Ejemplo 3
str_list = filter(bool, str_list)
#Ejemplo 4
str_list = filer(len, str_list)
#Ejemplo 5
str_list = filter(lambda item: item, str_list)
Otras herramientas útiles
Además de las anteriores funciones incluidas en las nuevas versiones de Python, también podemos dejaros con algunas herramientas útiles a la hora de programar en Python.
IPython, comandos mágicos
IPython es un shell de comandos para la computación interactiva, desarrollado originalmente para Python. Además, también acepta comandos mágicos, como el %paste, que pega un código copiado con formato.
Pexpect
El módulo pexpect sirve para ejecutar comandos, y, según salen, introducir textos en la consola. Es válido al usar comandos que requieren de un tiempo de espera para introducir parámetros. Así, se puede completar la ejecución del comando de forma correcta.
Bashplotlib
Mediante este módulo, podremos trazar gráficos en la consola.
Geopy
Gracias a este módulo, podemos abstraer la API de varios servicios de geocodificación. Esto permite acceder a los datos de una determinada ubicación, incluida la distancia entre dos puntos.
Howdoi
Con este módulo, se pueden “preguntar” las dudas que vayan surgiendo. Howdoi intentará darte la respuesta correcta. ¡Pero cuidado! Howdoi recoge el código de las respuestas de la comunidad de StackOverflow más populares, así que puede ser que no sea la información más útil.
Y tú, ¿sabías algo de todos estos trucos de Python? ¿Te animas a compartir alguno con nosotros?