Ils sont intégrés, faciles à utiliser et gardent les choses légères et efficaces
Nous aimons tous l’extensibilité de Python. L’utilisation de modules tiers de pip est un jeu d’enfant. Ils sont faciles à installer et il existe un module qui fera à peu près tout ce dont vous avez besoin, quelle que soit la niche.
Le problème avec les modules tiers est qu’ils peuvent devenir un train de dépendances incontrôlable. Vous intégrez un module tiers qui intègre encore plus de modules et avant que vous ne vous en rendiez compte, vous avez gonflé votre système. La plupart des systèmes modernes ont une tonne de ressources et d’espace disque, c’est donc rarement un problème. Mais que se passe-t-il si vous travaillez sur une plateforme embarquée ? Et si vous deviez être le plus efficace possible ?
Même si vous ne travaillez pas sous des contraintes strictes, n’utilisez que les modules dont vous avez besoin pour que tout fonctionne correctement.
C’est pourquoi vous devez vous familiariser avec les Bibliothèque standard Python. Cette bibliothèque contient tous les modules intégrés avec lesquels Python est livré par défaut. Il s’agit d’un vaste écosystème de packages utiles et fondamentaux. Bien qu’ils ne soient peut-être pas aussi brillants que certains outils tiers, ils peuvent être tout aussi performants si vous savez où chercher.
Dans cet article, nous allons explorer certains modules intégrés qui se démarquent vraiment. Ces modules aident à résoudre rapidement les problèmes courants et offrent juste assez de flexibilité sans surcharge.
Si vous manipulez du texte et souhaitez appliquer des règles sur des éléments tels que la longueur de ligne ou les espaces, cette bibliothèque est essentielle. La textwrap
Le module dispose d’une suite d’utilitaires pour manipuler la longueur totale des données textuelles.
Avec ce module, vous pouvez envelopper et raccourcir votre chemin vers de plus jolies cordes. Voyons comment nous pourrions raccourcir une phrase plus longue :
import textwrapsentence = "hello, this is a really long sentence of words"
wrapped = textwrap.shorten(sentence, width=25, placeholder=" ...")
print(wrapped)
Le résultat raccourcira notre phrase et insérera un espace réservé indiquant que nous avons tronqué du texte :
>>> hello, this is a ...
Bingo. Texte plus court et espace réservé pour ce dont nous nous sommes débarrassés. Ce module peut être utile pour afficher des aperçus de descriptions plus longues ou simplement pour s’assurer que les données entrantes respectent vos directives visuelles.
Une jolie imprimante intégrée. Ne quittez pas la maison sans elle. Regarder la sortie de données brutes est une énorme douleur dans le cul sans une sorte d’analyseur comme celui-ci. Heureusement, l’un est inclus dans la bibliothèque standard de Python.
La pprint
Le module vous permet d’afficher des structures de données complexes dans un format lisible par l’homme. Cela peut être particulièrement utile si vous vous lancez dans l’interpréteur Python pour essayer quelque chose.
Imprimons joliment un dictionnaire en utilisant l’exemple suivant :
import pprintdata = {'one':1,'two':2,'three':3,'four':4}
pprint.pprint(data, indent=4, width=10, sort_dicts=False)
Nous avons ici un simple dictionnaire de données. Nous imprimons assez le dictionnaire, en spécifiant comment nous voulons que la sortie soit indentée et la largeur globale. La raison pour laquelle nous ne trions pas le dict est qu’il est déjà trié lorsqu’il est assigné. Ça devrait ressembler a quelque chose comme ca:
>>> { 'one': 1,
'two': 2,
'three': 3,
'four': 4}
Nous pouvons voir que c’est clairement beaucoup plus lisible que la définition d’une ligne. Cela devient de plus en plus utile à mesure que les données grossissent. Être capable de lire un dictionnaire massif de valeurs profondément imbriquées ou de rechercher une liste de valeurs spécifiques est infiniment plus facile avec cette bibliothèque.
Combien de fois avez-vous eu besoin de stocker rapidement des données dans un fichier temporaire ? Peut-être que vous mettez en mémoire tampon des données entrantes ou que vous écrivez des fichiers de configuration. Construire votre propre solution de fichiers temporaires, c’est comme réinventer la roue simplement parce que vous vous ennuyez. Ne le faites pas. Utilisez le tempfile
module à la place.
Ce module intégré gérera tout le travail lourd de création de fichiers temporaires et de lecture ou d’écriture dans ceux-ci. Vous n’avez qu’à fournir quelques détails de base et vous aurez alors une interface de fichier robuste à utiliser :
import tempfiletf = tempfile.TemporaryFile()
tf.write(b'i am some temporary data')
tf.seek(0)
tf.read()
En utilisant l’exemple ci-dessus, vous pouvez générer automatiquement un fichier temporaire, y écrire puis le relire en moins de quelques lignes. Vous n’avez pas besoin de fournir des chemins de répertoire, de gérer des autorisations ou de modifier les propriétés de système de fichiers de bas niveau si vous ne le souhaitez pas.
Si vous voulez spécifier un fichier nommé, vous pouvez utiliser le NamedTemporaryFile
objet à la place. Cela fournira une interface pour un fichier avec lequel vous pouvez réellement interagir au niveau du système d’exploitation.
Si vous créez des applications Python multi-plateformes ou multi-architectures, ce module est crucial. La platform
Le module fournit des informations essentielles sur le système d’exploitation et le matériel sous-jacents. Vous pouvez également obtenir une mine d’informations sur l’interpréteur Python en cours d’exécution.
Ce module est pratique pour vérifier des choses comme l’architecture matérielle. Si nous voulions déterminer l’arche du système sous-jacent sur lequel nous nous trouvons, nous pourrions exécuter :
import platformprint(platform.machine())
Cela devrait produire l’architecture du système. Par exemple, sur un MacBook Pro M1, cela devrait être : arm64
.
Nous pourrions également connaître la version actuelle de notre interpréteur Python en exécutant :
import platformprint(platform.python_version())
Cela devrait produire une chaîne du numéro de version complet, comme 3.9.13
.
La platform
Le module contient également des méthodes spécifiques au système d’exploitation. Vous pouvez déterminer des informations spécifiques au système d’exploitation sur les machines Linux, macOS et Windows.
C’est un module super cool, et dont je n’avais aucune idée de l’existence jusqu’à récemment. Ce module vous permettra de manipuler les navigateurs Web sur la machine sous-jacente. Vous pouvez par exemple ouvrir des URL et obtenir des informations de base sur le navigateur d’un système.
La webbrowser
module n’est peut-être pas le plus pratique pour des choses comme les tests d’intégration, mais si vous voulez simplement afficher des pages Web à un utilisateur final, c’est un moyen rapide et facile de le faire.
Si nous voulions ouvrir google.com sur la machine sous-jacente, tout ce que nous devons faire est d’exécuter :
import webbrowserwebbrowser.open('https://google.com')
Cela devrait ouvrir un nouveau navigateur ou un nouvel onglet (si le navigateur est déjà ouvert) et naviguer vers google.com. Génial! Certaines utilisations intéressantes peuvent être l’affichage de la documentation sur votre application à un nouvel utilisateur ou l’ouverture d’une page Web qui génère un code QR. Il y a une tonne de possibilités une fois que vous contrôlez le navigateur.
La ipaddress
module a été un de mes favoris pendant un certain temps. C’est inestimable si vous faites n’importe quel type de mise en réseau avec Python. Manipuler manuellement les chaînes d’adresses IP est abrutissant et tout simplement inefficace. Cette bibliothèque vous offre une interface simple et élégante pour générer et analyser des adresses IP et des espaces réseau.
La meilleure partie de ce module est qu’il transformera une simple chaîne d’adresse IP en un objet riche en métadonnées. Disons que nous avions une adresse IP de base comme : 10.1.2.3
. En utilisant ce module, nous pourrions obtenir beaucoup d’informations à partir d’une seule adresse :
import ipaddressip_addr = ipaddress.ip_address('10.1.2.3')
print(ip_addr.is_private)
print(ip_addr.version)
print(ip_addr.is_loopback)
Nous pouvons déterminer des choses de base comme si l’adresse est publique ou privée. Nous pouvons déterminer de quelle version IP il s’agit (v4 ou v6). Nous pouvons également tester de nombreuses autres conditions pour déterminer à quel type d’adresse nous avons affaire. C’est idéal pour tout ce qui accepte les entrées de l’utilisateur ou la collecte en masse afin que vous puissiez filtrer les types d’adresses incorrects.
Une fonctionnalité très pratique est la possibilité d’analyser les sous-réseaux. Disons que nous avions un réseau fourni en notation CIDR comme ceci : 10.1.2.0/24
. Nous pourrions obtenir des informations de base sur le réseau comme ceci :
import ipaddressip_addr = ipaddress.ip_network('10.1.2.0/24')
print(ip_addr.netmask)
print(ip_addr.num_addresses)
print(ip_addr.broadcast_address)
Ces méthodes nous donneraient le masque de sous-réseau (en notation décimale), le nombre total d’adresses et l’adresse de diffusion du réseau. Combiné avec les adresses d’hôte, vous pouvez déterminer une myriade d’informations sur l’espace d’adressage IP.