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 :

Question d'imports répétés


Sujet :

Python

  1. #1
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut Question d'imports répétés
    [Avant propos : j'ai bouffé du tuto mais je n'apprends ce langage que depuis 2 jours]

    Bonjour à tous,

    J'ai un fichier1 qui importe shutil (entre autres).

    Il y a dans ce fichier1 un appel vers une classe de fichier2.
    Je pensais que le fichier1 pouvait "réutiliser" ses imports avec le fichier2 car ce dernier devient inclus dans fichier1 par l'appel.

    Et effectivement si j'importe shutil dans le fichier2, tout rentre dans l'ordre.

    La question : peut-on éviter de faire appel plein de fois à la même librairie dans le cadre d'une inclusion de fichier ?
    Parce que j'imagine qu'on perd en perf dans mon cas.

    Merci à vous,

    A bientôt,

    LeHibou

  2. #2
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Non, c'est la procédure normale.

    shutil n'est réellement importé qu'une seule fois.

    Lorsque tu l'importes à nouveau dans un autre module, il est simplement ajouté à l'espace de nom de ce module, sans quoi tu ne pourrai l'utiliser dans celui-ci.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 435
    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 435
    Points : 37 020
    Points
    37 020
    Par défaut
    Salut,
    Lorsqu'un script est "importé", il devient "module".
    "import" ajoute des définitions de variables au "module" fichier1.

    La définition des variables d'un "module" va dans l'espace de nom "globals()" qui malgré son nom est "local" au module.
    => les imports effectués dans "fichier1" modifient son "globals()" mais pas celui du module "fichier2"

    La question : peut-on éviter de faire appel plein de fois à la même librairie dans le cadre d'une inclusion de fichier ?
    Parce que j'imagine qu'on perd en perf dans mon cas.
    Les intuitions acquises avec d'autres langages doivent être retravaillées.
    "import" fait 2 choses:
    1. charger le module,
    2. modifier l'espace de nommage,

    Si le module a déjà été chargé, çà se contente de modifier l'espace de nommage.
    Exemple "simpliste":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> import sys as m1  # importe sys et l'accès au globals() de sys se fait par la variable "globale" m1
    >>> m1.foobar = "abcd" # modifie "sys" via m1.
    >>> import sys as m2 # import de sys via m2
    >>> m2.foobar # le "sys" n'est pas "rechargé".
    'abcd'
    note: pour recharger le module, il faut un "reload" explicite...
    - W

  4. #4
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut
    Merci beaucoup à vous deux, vous avez contribué à mon apprentissage

    Effectivement, je viens d'autres langages et c'était un point qu'il me fallait comprendre.


    Merci beaucoup à vous encore une fois et bonnes fêtes si vous y accordez une quelconque attention

    LeHibou

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

Discussions similaires

  1. Question sur importation des données
    Par ahmedpa dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/09/2013, 16h15
  2. [XL-2003] Question sur import fichiers
    Par Paul75 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 31/01/2011, 21h08
  3. Réponses: 5
    Dernier message: 21/07/2007, 22h18
  4. Question suite Import
    Par ch851 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 05/07/2007, 20h27
  5. [question de newbie] importer un dump
    Par delphim dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/12/2005, 13h50

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