IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Bonnes pratiques d'appel des packages


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Par défaut Bonnes pratiques d'appel des packages
    Bonjour à tous,

    Je suis en train de développer un petit package, qu'on va appeler my_package. Ce package contient plusieurs modules, qu'on va nommer module_a, module_b, et module_c
    L'architecture de mon répertoire ressemble donc à quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my_package
    |-- __ini__.py
    |-- module_a.py
    |-- module_b.py
    |-- module_c.py
    J'ai deux questions sur les bonnes pratiques d'appel des packages:
    1. Tous mes modules requièrent le package pandas. Quelles sont les bonnes pratiques dans ce cas ? Est-ce que je doit importer pandas au début de chaque fichier module_a.py, module_b.py, module_c.py ou est-ce qu'il est possible de le faire une fois dans le __ini__.py ?
    2. dans module_a, je dois appeler module_b. Il me semble qu'un package qui s'appelle lui même ne fait pas de sens... Comment gérer ça ?


    Merci beaucoup !

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Tu dois effectivement faire import machin dans chaque module qui l'utilise. Ça ne veut pas dire que ce module est chargé trois fois en mémoire, mais il est rendu accessible dans l'espace de nom du module qui l'importe.

    Pour ta deuxième question, faire import module_b dans module_a est tout ce qu'il y a de plus normal, où est le problème ?

  3. #3
    Membre chevronné
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Pour ta deuxième question, faire import module_b dans module_a est tout ce qu'il y a de plus normal, où est le problème ?
    Effectivement, ça me parait maintenant logique. Je ne sais pas pourquoi, je pensais que ça allait impliquer une sorte de récursivité.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par thecrazydonut Voir le message
    Tous mes modules requièrent le package pandas. Quelles sont les bonnes pratiques dans ce cas ? Est-ce que je doit importer pandas au début de chaque fichier module_a.py, module_b.py, module_c.py ou est-ce qu'il est possible de le faire une fois dans le __ini__.py ?
    Déjà, c'est __init__.py.

    import n'importe un module/package externe qu'une seule fois et ajoute des variables globales au module qui effectue l'import.

    Donc le premier import pandas charge pandas et associe la variable globale à ce package.
    Les suivants se contentent de définir la variable globale qui de toute façon sera nécessaire pour accéder au module pandas (mais pas pour appliquer des méthodes à des objets pandas).

    Pour les détails vous avez le chapitre sur les modules/packages du Python tutorial qui est un bon début.

    Citation Envoyé par thecrazydonut Voir le message
    dans module_a, je dois appeler module_b. Il me semble qu'un package qui s'appelle lui même ne fait pas de sens... Comment gérer ça ?
    Voir le tuto.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par thecrazydonut Voir le message
    ...ou est-ce qu'il est possible de le faire une fois dans le __ini__.py ?
    Ca peut sembler une bonne idée au départ mais en réalité ça ne l'est pas. Parce que si demain tu changes de techno et qu'un module n'a plus besoin de panda, tu l'importes alors dans "__init__.py" pour rien.
    Donc chaque module importe les trucs dont il a besoin et Python gèrera ça sans souci (seul le premier import est réellement traité).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre chevronné
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ca peut sembler une bonne idée au départ mais en réalité ça ne l'est pas. Parce que si demain tu changes de techno et qu'un module n'a plus besoin de panda, tu l'importes alors dans "__init__.py" pour rien.
    Exactement, c'était ça l'idée, éviter de répéter plusieurs fois le même code !

    Merci à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Vxi3] Agrégation : bonnes pratiques pour cumuler des valeurs ?
    Par fprovot dans le forum Designer
    Réponses: 0
    Dernier message: 25/07/2013, 19h34
  2. Bonnes pratiques vis à vis des fonctions inline ?
    Par Kaluza dans le forum Débuter
    Réponses: 8
    Dernier message: 14/04/2011, 20h35
  3. [Procédures stockées] Bonnes pratiques de gestion des erreurs
    Par jbrasselet dans le forum Développement
    Réponses: 4
    Dernier message: 04/02/2009, 00h14
  4. Réponses: 3
    Dernier message: 29/12/2008, 16h31
  5. [Bonnes Pratiques Internationales] Appels à expérience
    Par mathieugamin dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 09/10/2007, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo