Comments on: Pourquoi il faut éviter import * en Python http://sametmax.com/pourquoi-il-faut-eviter-import-en-python/ Du code, du cul Sat, 07 Nov 2015 11:08:18 +0000 hourly 1 http://wordpress.org/?v=4.1 By: nainport http://sametmax.com/pourquoi-il-faut-eviter-import-en-python/#comment-16175 Mon, 25 Nov 2013 23:17:44 +0000 http://sametmax.com/?p=8082#comment-16175 @Sam Bien vu, merci ! ;)

]]>
By: G-rom http://sametmax.com/pourquoi-il-faut-eviter-import-en-python/#comment-16171 Mon, 25 Nov 2013 22:22:35 +0000 http://sametmax.com/?p=8082#comment-16171 Si vraiment tu veux importer open de os et garder le builting open tu peux faire

from os import open as osopen
]]>
By: Sam http://sametmax.com/pourquoi-il-faut-eviter-import-en-python/#comment-16153 Mon, 25 Nov 2013 16:39:17 +0000 http://sametmax.com/?p=8082#comment-16153 @Eric : c’est une mauvaise habitude qui a été prise dans beaucoup de programmes pour toolkit graphic (on voit ça aussi dans pas mal de code avec QT ou Tkinter). Tu vois le problème, tu copies cette ligne et tu ne sais pas du tout ce qu’elle fait. Et moi non plus : impossible de savoir les dépendances du programme. Tu en utilises des composants, et tu ne sais pas d’où ils viennent.

C’est une mauvaise chose, à part dans le cas où tu utilises 20 objets de locals, et ce dans plusieurs fichiers. Ce cas exceptionnel dénote un gros projet et un dev qui sait ce qu’il fait. Dans ce cas le raccourcis est acceptable puisqu’on sait d’où on vient et où on va avec l’expérience, et le bénéfice dépasse le coût.

Mais un tel dev n’aura pas besoin de mon article et ne le lira pas.

]]>
By: JoJo http://sametmax.com/pourquoi-il-faut-eviter-import-en-python/#comment-16149 Mon, 25 Nov 2013 15:43:01 +0000 http://sametmax.com/?p=8082#comment-16149 @Jean-Eude : si tu utilise “from os import open”, tu ne peux plus utiliser le open builtin, mais si tu fais ça, c’est que :
– tu en es conscient
– tu veux vraiment utiliser la fonction open de os plutôt que la built-in dans tout ton module

]]>
By: fspot http://sametmax.com/pourquoi-il-faut-eviter-import-en-python/#comment-16148 Mon, 25 Nov 2013 15:40:29 +0000 http://sametmax.com/?p=8082#comment-16148 @Jean-Eude : dans un tel cas (à ne pas faire), tu peux retrouver le open builtin via __builtin__.open

]]>
By: Eric http://sametmax.com/pourquoi-il-faut-eviter-import-en-python/#comment-16147 Mon, 25 Nov 2013 15:40:07 +0000 http://sametmax.com/?p=8082#comment-16147 Est ce que vous pourriez éclairer ma lanterne à ce sujet.
Lorsque je dev avec Pygame, je suis obligé de l’importer ainsi :

import pygame
from pygame.locals import *

D’un côté, “.locals”, je ne sais pas du tout à quoi il peut bien servir et d’un autre côté seulement que quasi l’ensemble des programmes utilisant la lib pygame se servent de “from pygame.locals import *”.

]]>
By: Sam http://sametmax.com/pourquoi-il-faut-eviter-import-en-python/#comment-16146 Mon, 25 Nov 2013 15:37:41 +0000 http://sametmax.com/?p=8082#comment-16146 Ne vaut-il pas mieux lire le commentaire précédent ?

]]>
By: Fred http://sametmax.com/pourquoi-il-faut-eviter-import-en-python/#comment-16143 Mon, 25 Nov 2013 15:18:17 +0000 http://sametmax.com/?p=8082#comment-16143 Ne vaut-il pas mieux faire un import os et ensuite utiliser os.open() chaque fois qu’on en a besoin ?

]]>
By: Sam http://sametmax.com/pourquoi-il-faut-eviter-import-en-python/#comment-16138 Mon, 25 Nov 2013 14:30:48 +0000 http://sametmax.com/?p=8082#comment-16138 @nainport : personnellement je suis incapable de dire ce que j’importe avec *. Par exemple, avec *, tu importe automatiquement le module sys car os import sys. Donc non seulement tu sais pas ce que tu vas remplacer, mais en plus tu ne sais pas ce que tu déclenches derrière.

@Jean-Eud Tu fais pas from os import open. Mais si tu le faisais, tu pourrais trouver le bout de code responsable facilement. Si tu as des import *, pour trouver d’où vient le problème, bonne chance.

Pour les imports de la lib standard, on fait presque toujours “import module” de toute façon:

import re # re.match...
import sys # sys.path
import os # os.open
import urllib2 # urllib2.urlopen
import uuid # uuid.uuid4
import json # json.loads
import pickle # pickle.dumps

Seuls les modules très spécifiques, avec des noms longs et des fonctions qui ont peu de chance de clasher sont importés avec “from”:

from itertools import chain
from datetime import datetime

Et comme c’est explicite, on sait exactement ce qu’on a dans le namespace si il y a un problème plus tard.

]]>
By: Jean-Eude http://sametmax.com/pourquoi-il-faut-eviter-import-en-python/#comment-16131 Mon, 25 Nov 2013 12:59:11 +0000 http://sametmax.com/?p=8082#comment-16131 Du coup, quand t’as fait ‘from os import open’, comment tu peu utiliser le open builtin ?

]]>