Tres características de Python 3 poco utilizadas que todos deberían conocer



Python 3 ha existido por un tiempo, y bastantes desarrolladores, especialmente aquellos que recién comienzan en Python, ya están usando esta versión del lenguaje. Si bien muchas de las nuevas funciones se utilizan ampliamente, parece que algunas quedan atrás. En este artículo, cubriré tres de las características menos conocidas pero útiles. Los conozco en otros lenguajes y hacen que Python 3 sea genial.



Este artículo es una traducción de 3 características desatendidas en Python 3 que todos deberían estar usando .



Enumeraciones



He usado muchas enumeraciones en Java y Swift. Continúo usándolos ahora en Python.



Declarar una enumeración en Python es muy fácil de hacer, y era posible antes de la versión 3 (aunque con restricciones):



from enum import Enum

class State(Enum):
  AIR = 0
  LAND = 1
  SEA = 2
  
myState = State.AIR

#  0
print(myState.value)
#  AIR
print(myState.name)


En el código anterior, la enumeración se introduce declarando una clase que hereda de Enum. Y luego se describen simplemente todos los estados necesarios. En mi caso: AIR, LANDy SEA.



Una funcionalidad que se agregó en Python 3 es la capacidad de usar .valuey .name. Le permiten obtener el número y la cadena correspondientes a la enumeración.



Por ejemplo, el valor de salida State.LAND.nameserá LAND.



Las enumeraciones son útiles en el código cuando desea algunos identificadores textuales para constantes. Por ejemplo, en lugar de comparar un estado con 0 o 1, es mucho más revelador comparar con State.MOVINGo State.STATIONARY. Las constantes pueden cambiar y si alguien mira el código más tarde, entonces la palabraMOVINGdará mucha más comprensión que 0. Como resultado, la legibilidad del código aumenta considerablemente.



Puede encontrar más información en la documentación oficial de Python 3 sobre Enum .



Formateo



Agregado en la versión 3.6, fstringses una poderosa herramienta de formato de texto. Permiten un código mucho más legible y sin errores (que disfruto después de cambiar de Java). Esto es mejor que lo que formatse ha utilizado anteriormente en Python. Aquí tienes un ejemplo de uso format:



name = ''
blog_title = 'codeatcpp.com'

# ,          codeatcpp.com.
a = ",   {}       {}.".format(name, blog_title)


Es fácil notar las llaves vacías dentro de la cadena y después de la lista con los nombres de las variables en un orden específico.



Ahora veamos el mismo código, pero usarlo fstringes más legible y muy similar a la forma Swift de formatear.



name = ''
blog_title = 'codeatcpp.com'

# ,          codeatcpp.com.
a = f",   {name}       {blog_title}."


Para obtener una cadena tan ordenada, solo necesita poner una letra fdelante de las comillas y luego, en lugar de corchetes vacíos, puede escribir inmediatamente los nombres de las variables o datos directamente en la cadena. Dado que las variables se escriben directamente en una línea, no es necesario contar el número de elementos y realizar un seguimiento del orden en el que se colocan las variables al final. Están justo donde se necesitan sus valores.



Usarlo fstringproporciona un código más legible y más fácil de mantener que usar los enfoques clásicos.



Clases de datos



Las clases de datos pueden ser un tema más confuso que los anteriores, por lo que requerirá un poco más de explicación. Las clases de datos son algo que realmente me gustó de Kotlin, así que también me encanta usarlas en Python.



Una clase de datos es una clase cuyo único propósito es almacenar datos. La clase contiene variables que se pueden leer y escribir, pero no tiene lógica adicional.



Imagine que tiene un programa en el que necesita pasar una cadena y una matriz de números entre diferentes clases. Puede tener métodos como pass(str, arr), pero es mucho más conveniente crear una clase que contenga una cadena y una matriz como los únicos miembros de la clase.



El uso de una clase de datos muestra mejor lo que está intentando hacer y también facilita la creación de pruebas unitarias.



El siguiente ejemplo muestra una clase de datos simple que es un vector 3D, pero se puede ampliar fácilmente para representar cualquier combinación de datos diferentes:



from dataclasses import dataclass

#   
@dataclass
class Vector3D:
    x: int
    y: int
    z: int
      
#  
u = Vector3D(1,1,-1)

# : Vector3D(x=1, y=1, z=-1)
print(u)


Es fácil ver aquí que la definición de una clase de datos es muy similar a la definición de una clase regular, excepto que se usa un decorador @dataclassy luego cada campo se define como : .



Aunque la funcionalidad del creado es Vector3Dmuy limitada, el objetivo de usar la clase de datos es aumentar la eficiencia y reducir el número de errores en el código. Es mucho mejor pasarlo como parámetro Vector3Dque como un conjunto de variables de tipo int. Puede encontrar



más información sobre el decorador @dataclassen la documentación oficial de Python 3 .



Conclusión



Déjame saber en los comentarios cómo te gustan estas posibilidades. Será interesante conocer nuevos escenarios para su uso. ¡Feliz codificación!



All Articles