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 :

import os VS from os import * [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de scalpel
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Novembre 2008
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2008
    Messages : 157
    Par défaut import os VS from os import *
    Bonjour à tous.tes,

    Qu'elle différence y a t'il entre :

    import os et from os import *

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Question plus générale: différence entre from lib import * et import lib...

    Partons du principe que la lib contienne une fonction "toto". Dans la première version from lib import *, la fonction est directement intégrée dans l'espace de nom global du programme. Elle est alors accessible simplement par son nom => res=toto().
    Dans la seconde version import lib, cela crée un espace de nom spécifique "lib" dans lequel se trouve la fonction. Elle n'est alors accessible que si on précise l'espace dans lequel elle se trouve => res=lib.toto().

    La première version est sans doute plus attrayante MAIS si tu importes plusieurs libs différentes qui, toutes, contiennent une fonction "toto", celle du dernier import écrase les autres.
    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]

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 746
    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 746
    Par défaut
    Citation Envoyé par scalpel Voir le message
    Bonjour à tous.tes,

    Qu'elle différence y a t'il entre :

    import os et from os import *
    Si dans le module os, la variable toto est définie par toto = 123.
    le "from os import *" va fabriquer une variable (globale) toto dans le module courant.
    Juste après l'import un print(toto) affichera 123.

    Maintenant, si on appelle la fonction tartemolle de os qui modifie cette variable en "xyz"... seule la variable toto (globale) au module toto sera modifiée et print(toto) affichera toujours 123.

    Si on écrit "import os", on ne définira que la variable os a associée à l'objet module. Et pour accéder à la variable toto de ce module, il faudra utiliser le nom composé os.toto. Du coup, le module devient Singleton...

    Règles à 3 sous.
    Si vous codez un exemple pour découvrir une fonctionnalité du module os, le "from os import *" est raisonnable. Pour du vrai code, utiliser import os ou import os as .... Puis pour optimiser (l'accès à os.toto à une indirection vs toto seul), on peut avoir (en plus) des from os import toto,....

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

  4. #4
    Membre confirmé Avatar de scalpel
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Novembre 2008
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2008
    Messages : 157
    Par défaut
    Merci,

    Avec vos deux retours, je pense avoir bien compris :

    Pour en être sur, j'ai testé dans mon exercice précédent avec la fonction randrange du module random :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     x, y =random.randrange(40, 180, 40), random.randrange(40, 180, 40)
    Par contre, la fonction tartemolle() du module os me retourne un message d'erreur

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

Discussions similaires

  1. Importer une variable avec le bloc "From Workspace"
    Par lfournie dans le forum Simulink
    Réponses: 2
    Dernier message: 13/08/2008, 10h26
  2. from xml.marshal import generic
    Par Gldev_comp dans le forum Général Python
    Réponses: 2
    Dernier message: 10/07/2008, 16h40
  3. import / copy folder from file system
    Par chichone dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 13/06/2008, 16h10
  4. import ou from
    Par Chris33 dans le forum Tkinter
    Réponses: 7
    Dernier message: 25/10/2006, 10h09
  5. [SQL-SERVER]Importing data from external sources
    Par poosh dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/04/2006, 13h25

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