Maison >développement back-end >Tutoriel Python >Pourquoi devriez-vous éviter « importer * » en Python ?
En Python, l'énigmatique commande "import *" accorde un accès sans précédent aux ressources d'un module. Il importe non seulement le module désigné, mais également le précieux fichier __init__.py résidant dans le dossier contenant. En conséquence, le module béni __init__.py devient partie intégrante de l'espace de noms actuel.
Avec le pouvoir d'importation , la nécessité de déclarer explicitement "from project.model import __init__" s'évapore. Un simple "from project.model import " suffit pour englober tout ce qui se trouve à la fois dans le module project.model et dans son sacré fichier __init__.py.
Le L'attrait de import * réside dans sa capacité à importer tous les objets nommés (à l'exception de ceux commençant par un trait de soulignement) d'un module désigné dans l'espace de noms actuel. Cela permet d'accéder sans tracas à tout objet importé sans avoir à préfixer son nom avec l'identifiant du module.
Par exemple, considérons l'extrait suivant :
from math import *
Cette incantation magique nous permet pour exercer de manière transparente la puissance de pi sans aucune connaissance préalable :
pi 3.141592653589793
Cependant, l'immense pouvoir d'importation * a un prix. Cela met en évidence les dangers des collisions d’espaces de noms, écrasant potentiellement les variables existantes dans la portée actuelle. De plus, cela peut s'avérer inefficace si le module cible héberge une pléthore d'objets. Enfin, et c'est peut-être le plus important, il étouffe la nature auto-documentée du code, laissant l'origine des variables, des méthodes et des classes entourée de mystère.
Par conséquent, le sage parmi nous, réservez import * pour les tests ad hoc et préférez des alternatives plus explicites pour le code de production. Un choix prudent consiste à importer explicitement uniquement les objets souhaités :
from math import pi
Alternativement, importer l'intégralité du module sous un espace de noms distinct peut être un compromis judicieux :
import math as m
Pour percer les mystères de l'import*, il est impératif d'en comprendre les rouages. Par défaut, il importe tous les objets nommés (à l'exclusion de ceux commençant par un trait de soulignement). Cependant, si le module désigné définit une variable all, la priorité est donnée et seuls les noms énumérés dans cette variable sont importés.
De nombreuses bibliothèques Python standards sont organisées en sous-modules, comme urllib.request, l'extension omniprésente du module urllib. Il est important de noter que import * from urllib ne traversera pas ces salles sacrées ; des instructions d'importation distinctes sont nécessaires pour y accéder :
from math import *
Les humbles commandes import * exercent un pouvoir immense, offrant la possibilité d'importer le contenu d'un module entier dans l'espace de noms actuel. Cependant, c’est un pouvoir qui doit être utilisé avec prudence, de peur que les dangers des collisions d’espaces de noms, de l’inefficacité et du manque d’auto-documentation ne nous attrapent. Pour le code de production, des pratiques d'importation plus explicites et structurées sont la voie vers la tranquillité et la clarté.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!