Import module ou module.truc ou import*

Import module ou module.truc ou import* - Python - Programmation

Marsh Posté le 17-06-2016 à 09:06:47    

Bonjour.
Ma question se pose sur les imports en haut de python.
Comment optimiser ?

Code :
  1. import urllib2
  2. from urllib2 import URLError

voilà l'exemple typique.
si je continue dans mon code j'utilise  
urllib2.Request
urllib2.urlopen
Or il m'a fallu ajouter en haut  

Code :
  1. from urllib2 import URLError

car ce n'était pas géré par  

Code :
  1. import urllib2

Je pensais que le fait d'écrire  

Code :
  1. import urllib2

engloberait tout le package urllib2
 
Alors quelle solution ?

Code :
  1. from urllib2 import A
  2. from urllib2 import B
  3. from urllib2 import C
Code :
  1. from urllib2 import *


 
???
PS. Ça s'applique aussi pour d'autres modules évidemment
Merci


---------------
http://www.ypikay.com
Reply

Marsh Posté le 17-06-2016 à 09:06:47   

Reply

Marsh Posté le 18-06-2016 à 08:50:58    

J'ai pas compris où se situait le problème.
 

Code :
  1. >>> import urllib2
  2. >>> dir(urllib2)
  3. ['AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'AbstractHTTPHandler', 'BaseHandler', 'CacheFTPHandler', 'FTPHandler', 'FileHandler', 'HTTPBasicAuthHandler', 'HTTPCookieProcessor', 'HTTPDefaultErrorHandler', 'HTTPDigestAuthHandler', 'HTTPError', 'HTTPErrorProcessor', 'HTTPHandler', 'HTTPPasswordMgr', 'HTTPPasswordMgrWithDefaultRealm', 'HTTPRedirectHandler', 'HTTPSHandler', 'OpenerDirector', 'ProxyBasicAuthHandler', 'ProxyDigestAuthHandler', 'ProxyHandler', 'Request', 'StringIO', 'URLError', 'UnknownHandler', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__version__', '_cut_port_re', '_have_ssl', '_opener', '_parse_proxy', '_safe_gethostbyname', 'addinfourl', 'base64', 'bisect', 'build_opener', 'ftpwrapper', 'getproxies', 'hashlib', 'httplib', 'install_opener', 'localhost', 'mimetools', 'os', 'parse_http_list', 'parse_keqv_list', 'posixpath', 'proxy_bypass', 'quote', 'random', 'randombytes', 're', 'request_host', 'socket', 'splitattr', 'splithost', 'splitpasswd', 'splitport', 'splittag', 'splittype', 'splituser', 'splitvalue', 'ssl', 'sys', 'time', 'toBytes', 'unquote', 'unwrap', 'url2pathname', 'urlopen', 'urlparse', 'warnings']
  4. >>> urllib2.URLError
  5. <class 'urllib2.URLError'>


 
Et en ce qui concerne les différences dans les modes d'importations des modules, y'a plein de sites qui en parlent.
 
Entre beaucoup d'autres :
http://effbot.org/zone/import-confusion.htm
http://chimera.labs.oreilly.com/bo [...] /ch10.html
http://stackoverflow.com/questions [...] import-bad
 
Sinon, une question pourquoi utiliser python2 plutôt que 3 ?


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
Reply

Marsh Posté le 19-06-2016 à 17:31:35    

erwan83 a écrit :

Bonjour.
Ma question se pose sur les imports en haut de python.
Comment optimiser ?

Code :
  1. import urllib2
  2. from urllib2 import URLError

voilà l'exemple typique.
si je continue dans mon code j'utilise  
urllib2.Request
urllib2.urlopen
Or il m'a fallu ajouter en haut  

Code :
  1. from urllib2 import URLError

car ce n'était pas géré par  

Code :
  1. import urllib2

Je pensais que le fait d'écrire  

Code :
  1. import urllib2

engloberait tout le package urllib2


wut? `import urllib2` ça te donne un objet (module) `urllib2` dans le namespace local via lequel tu peux accéder au contenu du module:

Code :
  1. >>> import urllib2
  2. >>> urllib2.Request
  3. <class urllib2.Request at 0x10f78be20>
  4. >>> urllib2.urlopen
  5. <function urlopen at 0x10f52bc08>
  6. >>> urllib2.URLError
  7. <class 'urllib2.URLError'>


[:spamafote]

erwan83 a écrit :

Alors quelle solution ?

Code :
  1. from urllib2 import A
  2. from urllib2 import B
  3. from urllib2 import C
Code :
  1. from urllib2 import *


 
???


bah `import urllib2` [:petrus75]


Message édité par masklinn le 19-06-2016 à 17:32:36

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed