Import *
Bonsoir,
Je souhaitais revenir sur l'import de module
façon 1:
from random import *
Le fait d'importer de cette manière est déconseillé. Mais en quoi est-ce différent de
façon 2 :
import random
?
Si j'ai bien compris si je j'utilise la façon 1, j'amène tout ce qui est dans random dans mon espace global dans lequel je suis ?
Alors que si j'utilise la façon 2, rien n'est importer dans mon espace global, mais les fonctions du module sont récupérées depuis le module en fait ? Tout n'est pas importé dans mon espace global ?
J'ai bien compris ?
Merci d'avance
Salut Gabriel,
oui c'est un peu ça. Quelques précisions:
Avec la méthode 1 effectivement tu vas importer tout ce qu'il y a dans random. Ce n'est vraiment pas optimal car peut être que tu n'as besoin que de la méthode randint() de random par exemple. Il y a aussi le danger d'écraser des méthodes ou variables du module random avec des fonctions que tu vas créer dans ton script courant (pas d'inquiétude, tu n'écraseras pas les fonctions de random). Je te dis une bêtise mais imagines que dans le module random il y a une méthode qui s'appelle generate_alea() . Si dans ton script à toi, là où tuas fait un from random import *, tu créées une fonction generate_alea(), alors tu vas écraser la méthode de random. Et le jour où tu reviendras dans ton script et que cette fois tu voudras vraiment utiliser la méthode generate_alea() mais de random cette fois ci et bien tu n'auras pas du tout le résultat de la méthode de random mais celui de ta propre fonction. Et si ton script est gros ou que c'est un module, bonjour la galère pour comprendre ce qu'il se passe.
Alors que si tu fais import random. Dans ton script tu es sûr d'avoir des méthodes de random quand tu feras random.randint() et c'est aussi beaucoup plus lisible. Tu sais d'où vient la méthode: si c'est une méthode d'un module de python ou une méthode à toi.
De plus dans la la méthode from module import * si 'module' est un module que tu as créé, si par malheur tu n'as pas mis le fameux
if __name__ == "__main__":
Tu vas te retrouver à exécuter tout ce qu'il a dans 'module'.
J'espère que ça t'éclaircit un peu.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte