gratifiant > comp.lang.* > comp.lang.python

ast (12/08/2016, 09h54)
bonjour

Lorsque j'importe un sous module, je constate que le module
aussi est importé. Pourquoi ? Est ce une fonctionnalité de
Python ?

Par exemple:

>>> import os.path
>>> os <module 'os' from 'C:\\Program Files\\Python35-32\\lib\\os.py'>
>>> os.getcwd() 'C:\\Users\\jean\\desktop'


Un autre exemple:
Benoit Izac (12/08/2016, 12h15)
Bonjour,

Le 12/08/2016 à 09:54, ast a écrit dans le message
<57ad809b$0$7131$426a74cc> :

> Lorsque j'importe un sous module, je constate que le module
> aussi est importé. Pourquoi ? Est ce une fonctionnalité de
> Python ?
> Par exemple:
> <module 'os' from 'C:\Program Files\Python35-32\lib\os.py'>
> 'C:\Users\jean\desktop'


Je vois mal comment il pourrait en être autrement puisque pour
l'utiliser tu dois faire os.path.xxx. Si tu veux juste path, il faut
faire :

from os import path
ast (13/08/2016, 18h24)
"Benoit Izac" <use.reply.to> a écrit dans le message de
news:sfsf
[..]
> from os import path
> --
> Benoit Izac


ok mais je n'ai jamais vu cela écrit nulle part
Benoit Izac (13/08/2016, 23h36)
Bonjour,

Le 13/08/2016 à 18:24, ast a écrit dans le message
<57af49bc$0$710$426a74cc> :

> ok mais je n'ai jamais vu cela écrit nulle part


Ici <https://docs.python.org/3/reference/simple_stmts.html#import> :

| If the module being imported is not a top level module, then the name
| of the top level package that contains the module is bound in the
| local namespace as a reference to the top level package. The imported
| module must be accessed using its full qualified name rather than
| directly

>>> import os.path # 3ème cas (cité ci-dessus)
>>> locals()

{'__doc__': None, '__package__': None, '__spec__': None,
'__name__': '__main__',
'__loader__': <class '_frozen_importlib.BuiltinImporter'>,
'__builtins__': <module 'builtins' (built-in)>,
'os': <module 'os' from '/usr/lib/python3.5/os.py'>} <=

>>> import os.path as path # 1er cas
>>> locals()

{'__name__': '__main__',
'path': <module 'posixpath' from '/usr/lib/python3.5/posixpath.py'>, <=
'__spec__': None, '__doc__': None, '__package__': None,
'__builtins__': <module 'builtins' (built-in)>,
'__loader__': <class '_frozen_importlib.BuiltinImporter'>}
ast (15/08/2016, 08h21)
"Benoit Izac" <use.reply.to> a écrit dans le message de
news:0fsf
[..]
> '__loader__': <class '_frozen_importlib.BuiltinImporter'>}
> --
> Benoit Izac


merci pour le lien
Le import est assez compliqué quand on cherche à rentrer dans
les détails
Discussions similaires