Maison >développement back-end >Tutoriel Python >Ai-je besoin de fichiers `__init__.py` pour les packages dans Python 3.3 ?
Question :
En Python 3.3, est-il toujours nécessaire d'avoir un __init__. fichier py lors de l'importation forfaits ?
Réponse :
Pas nécessairement. Python 3.3 a introduit le concept de « packages d'espace de noms implicites », permettant de créer des packages sans fichier __init__.py. Ceux-ci sont connus sous le nom de packages d'espace de noms, contrairement aux packages classiques qui ont un fichier __init__.py.
Cas d'utilisation du package d'espace de noms implicite :
Les packages d'espace de noms sont spécifiquement utilisés lorsque plusieurs bibliothèques résident à des emplacements différents et doivent contribuer à un sous-package au même package parent. Par exemple, considérons la structure suivante :
google_pubsub/ # Package 1 google/ # Namespace package cloud/ # Namespace package pubsub/ # Regular package __init__.py foo.py google_storage/ # Package 2 google/ # Namespace package cloud/ # Namespace package storage/ # Regular package __init__.py bar.py
Sans packages d'espace de noms, l'importation de "google_pubsub" et de "google_storage" échouerait car Python traite les packages standards comme des entités autonomes. En supprimant les fichiers __init__.py des répertoires « google » et « google/cloud », ils sont interprétés comme des packages d'espace de noms, permettant à l'interpréteur Python de rechercher et de contribuer aux modules et sous-packages au package « google ».
Packages réguliers ou packages d'espace de noms :
Dans la plupart des cas, il est recommandé de s'en tenir aux packages réguliers en utilisant des packages vides. Fichiers __init__.py. En effet :
Conclusion :
Bien que les packages d'espaces de noms puissent être utiles dans des scénarios spécifiques, ils doivent être utilisés avec parcimonie. Pour la plupart des développeurs et des cas d’utilisation, les packages standards avec les fichiers __init__.py constituent l’approche recommandée. Envisagez les packages d'espaces de noms uniquement lorsqu'il existe un réel besoin de partager des espaces de noms entre plusieurs répertoires contenant des sous-packages.
Références :
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!