Las 6 funciones más útiles de Python 3.10
Python 3.10 se jacta de ser una de las versiones más estables disponibles para que la descarguen los usuarios, y se lanzará a finales de este año. La versión recién lanzada vendrá con muchos cambios notables, como funcionalidades fáciles de usar tanto para programadores novatos como experimentados.
Las mejoras evidentes en la nueva versión de Python incluyen la introducción de coincidencia de patrones estructurales, mejores mensajes de error, nuevos operadores de unión, números de línea precisos para depuración y mucho más.
Esto es lo que necesita saber sobre Python 3.10:
Coincidencia de patrones estructurales en Python 3.10
Structural Pattern Matching hace que la escritura de código sea muy fácil, y sigue siendo uno de los aspectos más destacados de la última versión de Python. Python tiene como objetivo mejorar las declaraciones de casos de coincidencia preexistentes presentes en las versiones anteriores del lenguaje de programación. Se realizó una actualización de las declaraciones de casos de coincidencia existentes en Python.
Echemos un vistazo rápido a las implementaciones de Structural Pattern Matching:
La declaración de caso de coincidencia ha sido parte del lenguaje Python desde hace un tiempo. Esta declaración se utiliza básicamente para evitar el tedioso trabajo de escribir la declaración if-else varias veces.
Puede comparar objetos con propiedades similares utilizando esta función en la nueva compilación.
match media_object:
case Image(type="jpg"):
# Return as-is
return media_object
case Image(type="png") | Image(type="gif"):
return render_as(media_object, "jpg")
case Video():
raise ValueError("Can't extract frames from video yet")
case other_type:
raise Exception(f"Media type {media_object} can't be handled yet")
La nueva biblioteca de Python reconoce objetos como jpg, gif y videos. Este código se puede ejecutar sin problemas sin generar un error.
2. Mensajes de error mejorados
Es probable que todos los codificadores comprendan la importancia de los errores al escribir código y lo exasperantes que pueden ser algunos tipos de errores. Las versiones anteriores de Python arrojaban mensajes de error tan pronto como había problemas en la sintaxis. Estos podrían deberse a una sintaxis incorrecta, palabras clave faltantes, palabras clave incorrectas o mal escritas, entre otros problemas.
Estos mensajes de error estaban lejos de ser perfectos, ya que se volvió difícil para los principiantes (en algunos momentos, incluso para los usuarios avanzados) identificar la causa real del error en sus códigos. Como programador, Google sigue siendo su aliado para descifrar el motivo de los distintos mensajes de error.
Por ejemplo, es posible que muchas personas no sepan por qué Python arroja el siguiente error:
SyntaxError: unexpected EOF while parsing error message.
La falta de claridad en tales declaraciones llevó a la versión más reciente de Python a mejorar su conjunto existente de mensajes de error.
Los mensajes más antiguos se han reemplazado por mensajes de error fáciles de entender como:
{nunca se cerró EOF inesperado durante el análisis
Algunos cambios más incluyen:
Errores de atributos como:
from collections import namedtoplo
el módulo 'colecciones' no tiene el atributo 'namedtoplo'. ¿Quiso decir? Namedtuple?
Los mensajes NameError se modifican para que tengan el siguiente aspecto:
new_var = 5
print(new_vr)>
NameError: el nombre 'new_vr' no está definido. ¿Quiso decir? New_var?
3. Administradores de contexto entre paréntesis
Los nuevos administradores de contexto entre paréntesis pueden hacer que su código se vea más elegante. Aunque no es una característica importante, puede hacer que su código sea menos torpe. Esta característica es beneficiosa si trabaja en equipo y su código debe estructurarse.
Imagínese escribir una declaración como:
with open('file1.txt', 'r') as fin, open('file2.txt', 'w') as fout:
fout.write(fin.read())
El código anterior funciona, pero la primera línea es demasiado larga y parece torpe. Puede romper la línea usando una barra invertida ( ) y hacer que el código parezca estructurado:
with open('file1.txt', 'r') as fin, open('file2.txt', 'w') as fout: fout.write(fin.read())
Con la introducción del nuevo administrador de contexto entre paréntesis, también puede romper la línea usando paréntesis:
with (open('file1.txt', 'r') as fin,
open('file2.txt', 'w') as fout):
fout.write(fin.read())
4. Operador sindical de nuevo tipo
Una característica pequeña pero útil en Python 3.10 es el nuevo tipo de operador de unión. Cada versión de Python viene con un conjunto predefinido de características de sugerencia de tipo.
El operador de unión incluye lógica condicional; por ejemplo, int o float se pueden escribir como Union [X, Y] . El nuevo operador de unión también se puede expresar como int | float .
La introducción de un nuevo operando de unión en Python 3.10 ahorra tiempo y hace que el código parezca bien definido.
Por ejemplo:
def f(x: int | float) -> float:
return x * 3.142
f(1) # pass
f(1.5) # pass
f('str') # linter will show annotation error
5. Números de línea precisos para depuración
Es posible que haya notado muchas veces antes que el seguimiento de errores no lo redirige a la línea correcta donde se produjo un error. Esto dificulta la depuración para los programadores que acaban de empezar a escribir código.
El seguimiento de errores defectuoso es especialmente evidente al escribir sys.settrace y herramientas relacionadas en Python. La versión más reciente mejora esto significativamente y puede ver números de línea precisos cuando ocurre un error.
Para traer un número de línea más preciso, Python 3.10 cambia su confiabilidad del atributo co_Inotab actual y usa el atributo co_lines () del nuevo método. Este atributo funciona de tal manera que f_lineo siempre contiene el número de línea exacto.
1. for (
2. x) in [1]:
3. pass
4. return
6. Evaluación aplazada de anotaciones
Dentro de Python, la evaluación de la anotación de tipo se realiza en el momento de la definición de la función. Esto significa que las anotaciones de tipo se evalúan línea por línea de arriba hacia abajo.
Aunque parezca la mejor opción, todavía existen dos problemas con este enfoque:
- Las sugerencias de tipo se refieren a tipos que aún no están definidos y que no funcionan; estas sugerencias deben expresarse como cadenas.
- Las importaciones de módulos se ralentizaron a medida que las sugerencias de tipo se ejecutan en tiempo real.
Para evitar problemas de ejecución, las anotaciones se almacenan en _anotaciones_ y la evaluación se realiza en conjunto. Esto permite la referenciación hacia adelante cuando las importaciones de módulos se ejecutan primero, reduciendo así el tiempo de inicialización.
Trabajar con las funciones más nuevas en Python 3.10
La versión más reciente de Python se lanzará el 4 de octubre de 2021; promete corregir los errores que están presentes en las versiones existentes. Las versiones que siguen mejorarán la versión 3.10 actual.
El mapeo de patrones estructurales es lo más destacado de esta nueva actualización y simplifica la escritura de códigos para objetos similares. Otras características, como los administradores de contexto entre paréntesis y los nuevos operadores de unión de tipo, tienen como objetivo hacer que el código sea más simple y eficiente.
Sin embargo, existen algunas técnicas excelentes de manejo de excepciones dentro de las versiones existentes de Python. Puede hacer un buen uso de las funcionalidades de Python.