Python 3 existe depuis un certain temps et de nombreux développeurs, en particulier ceux qui débutent en Python, utilisent déjà cette version du langage. Bien que de nombreuses nouvelles fonctionnalités soient largement utilisées, il semble que quelques-unes soient laissées pour compte. Dans cet article, je couvrirai trois des fonctionnalités les moins connues mais utiles. Je les connais dans d'autres langues et ils rendent Python 3 cool.
Cet article est une traduction de 3 fonctionnalités négligées dans Python 3 que tout le monde devrait utiliser .
Énumérations
J'ai beaucoup utilisé les énumérations en Java et Swift. Je continue à les utiliser maintenant en Python.
Déclarer une énumération en Python est très facile à faire, et c'était possible avant la troisième version (bien qu'avec des restrictions):
from enum import Enum
class State(Enum):
AIR = 0
LAND = 1
SEA = 2
myState = State.AIR
# 0
print(myState.value)
# AIR
print(myState.name)
Dans le code ci-dessus, l'énumération est introduite en déclarant une classe qui hérite de
Enum
. Et puis tous les états nécessaires sont simplement décrits. Dans mon cas: AIR
, LAND
et SEA
.
Une fonctionnalité qui a été ajoutée dans Python 3 est la possibilité d'utiliser
.value
et .name
. Ils vous permettent d'obtenir le nombre et la chaîne correspondant à l'énumération.
Par exemple, la valeur sortie
State.LAND.name
sera LAND
.
Les énumérations sont utiles dans le code lorsque vous voulez des identificateurs textuels pour les constantes. Par exemple, au lieu de comparer un état avec 0 ou 1, il est beaucoup plus révélateur de comparer avec
State.MOVING
ou State.STATIONARY
. Les constantes peuvent changer et si quelqu'un regarde le code plus tard, alors le motMOVING
donnera beaucoup plus de compréhension que 0. En conséquence, la lisibilité du code est considérablement augmentée.
Plus d'informations peuvent être trouvées dans la documentation officielle de Python 3 sur Enum .
Mise en page
Ajouté dans la version 3.6, c'est
fstrings
un puissant outil de formatage de texte. Ils permettent un code beaucoup plus lisible et sans erreur (ce que j'apprécie après le passage de Java). C'est mieux que ce qui format
a été utilisé précédemment en Python. Voici un exemple d'utilisation format
:
name = ''
blog_title = 'codeatcpp.com'
# , codeatcpp.com.
a = ", {} {}.".format(name, blog_title)
Il est facile de remarquer les accolades vides à l'intérieur de la chaîne et après la liste avec les noms des variables dans un ordre spécifique.
Regardons maintenant le même code, mais son utilisation
fstring
est plus lisible et très similaire à la méthode de formatage Swift.
name = ''
blog_title = 'codeatcpp.com'
# , codeatcpp.com.
a = f", {name} {blog_title}."
Pour obtenir une chaîne aussi soignée, il vous suffit de mettre une lettre
f
devant les guillemets, puis au lieu de crochets vides, vous pouvez immédiatement écrire les noms des variables ou des données directement dans la chaîne. Puisque les variables sont écrites directement dans une ligne, il n'est pas nécessaire de compter le nombre d'éléments et de garder une trace de l'ordre dans lequel les variables sont placées à la fin. Ils sont exactement là où leurs valeurs sont nécessaires.
Son utilisation
fstring
donne un code plus lisible et plus facile à maintenir que l'utilisation des approches classiques.
Classes de données
Les classes de données peuvent être un sujet plus déroutant que les précédents, il faudra donc un peu plus d'explications. Les classes de données sont quelque chose que j'ai vraiment aimé chez Kotlin, alors j'aime aussi les utiliser en Python.
Une classe de données est une classe dont le seul but est de stocker des données. La classe contient des variables qui peuvent être lues et écrites, mais n'a pas de logique supplémentaire.
Imaginez que vous ayez un programme dans lequel vous devez passer une chaîne et un tableau de nombres entre différentes classes. Vous pouvez avoir des méthodes comme
pass(str, arr)
, mais il est beaucoup plus pratique de créer une classe contenant une chaîne et un tableau comme seuls membres de la classe.
L'utilisation d'une classe de données montre mieux ce que vous essayez de faire et facilite également la création de tests unitaires.
L'exemple ci-dessous montre une classe de données simple qui est un vecteur 3D, mais elle peut être facilement étendue pour représenter n'importe quelle combinaison de données différentes:
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)
Il est facile de voir ici que la définition d'une classe de données est très similaire à la définition d'une classe régulière, sauf qu'un décorateur est utilisé
@dataclass
et ensuite chaque champ est défini comme :
.
Bien que la fonctionnalité de celle créée soit
Vector3D
très limitée, le but de l'utilisation de la classe de données est d'augmenter l'efficacité et de réduire le nombre d'erreurs dans le code. Il est bien préférable de le passer en paramètre Vector3D
qu'un ensemble de variables de type int
.
Vous trouverez plus d'informations sur le décorateur
@dataclass
dans la documentation officielle de Python 3 .
Conclusion
Faites-moi savoir dans les commentaires comment vous aimez ces possibilités. Il sera intéressant d'entendre parler de nouveaux scénarios d'utilisation. Bon codage!