Maison >développement back-end >Tutoriel Python >Python 3.3 élimine-t-il le besoin de __init__.py dans les packages ?

Python 3.3 élimine-t-il le besoin de __init__.py dans les packages ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-29 06:54:09384parcourir

Does Python 3.3  Eliminate the Need for __init__.py in Packages?

Est-ce que __init__.py n'est pas requis pour les packages dans Python 3.3 ?

Python 3.3 et les versions ultérieures introduisent le concept de packages d'espace de noms. Cette fonctionnalité vous permet de créer un package sans fichier __init__.py.

Packages d'espace de noms par rapport aux packages réguliers

  • Packages d'espace de noms : Ne pas avoir de fichier __init__.py, ce qui permet à plusieurs modules de contribuer au même package sur différents répertoires.
  • Packages réguliers : avoir un fichier __init__.py, les rendant autonomes et isolant leurs modules dans une seule hiérarchie de répertoires.

< h2>Quand utiliser les packages d'espace de noms

Le cas d'utilisation principal de l'espace de noms packages, c'est lorsque vous avez plusieurs bibliothèques résidant à différents emplacements et que vous souhaitez qu'elles contribuent à un sous-package au package parent.

Par exemple :

google_pubsub/ <- Package 1

google/                 <- Namespace package (no __init__.py)
    cloud/              <- Namespace package (no __init__.py)
        pubsub/         <- Regular package (with __init__.py)
            __init__.py <- Required to make the package a regular package
            foo.py

google_storage/ <- Forfait 2

google/                 <- Namespace package (no __init__.py)
    cloud/              <- Namespace package (no __init__.py)
        storage/        <- Regular package (with __init__.py)
            __init__.py <- Required to make the package a regular package
            bar.py

Dans cet exemple, google_pubsub et google_storage partagent le même espace de noms google/cloud. Cela vous permet d'importer des modules depuis l'une ou l'autre des bibliothèques sans fournir le chemin complet.

Packages réguliers

Pour la plupart des cas d'utilisation, création de packages standards avec des fichiers __init__.py est toujours l’approche recommandée. Cela assure l'auto-confinement et évite les conflits potentiels d'espace de noms.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn