En Python, la définition d'un paquet est très simple. Comme en Java, la structure hiérarchique et la structure des répertoires sont les mêmes. Mais vous devez avoir __init__.py
dans un paquet. Je vais expliquer le __init__.py
avec l'exemple ci-dessous :
package_x/
|-- __init__.py
|-- subPackage_a/
|------ __init__.py
|------ module_m1.py
|-- subPackage_b/
|------ __init__.py
|------ module_n1.py
|------ module_n2.py
|------ module_n3.py
__init__.py
peut être vide, tant qu'elle existe. Il indique que le répertoire doit être considéré comme un paquet. Bien sûr, __init__.py
peut également définir le contenu approprié.
Si nous ajoutons une fonction dans le module_n1 :
def function_X():
print "function_X in module_n1"
return
Après avoir couru :
>>>from package_x.subPackage_b.module_n1 import function_X
>>>function_X()
function_X in module_n1
Ensuite, nous avons suivi le paquet hiérarchique et appelé la fonction module_n1. Nous pouvons utiliser __init__.py
dans le sous-paquet_b comme ceci :
__all__ = ['module_n2', 'module_n3']
Après avoir couru :
>>>from package_x.subPackage_b import *
>>>module_n1.function_X()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named module_n1
Par conséquent, en utilisant * l'importation, le paquet de module est soumis à __init__.py
contenu.
27 votes
Selon le commentaire ci-dessous par @Rob_before_edits et ce fil de stackoverflow 37139786 il semble que init .py n'est plus nécessaire pour Python 3.3+.
26 votes
Paquet sans
__init__
es paquet de noms et non un paquet régulier . Ce n'est pas la même chose. comme l'a souligné @methane avec un exemple ici .0 votes
Pour ceux qui recherchent un cours gratuit et interactif sur Python , vous avez ici : theconstructsim.com/robotigniteacademy_learnros/