Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Import d'un sous module

4 réponses
Avatar
ast
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:

>>> import numpy.polynomial
>>> numpy
<module 'numpy' from 'C:\\Program Files\\Python35-32\\lib\\site-packages\\numpy\\__init__.py'>
>>> numpy.sqrt(2)
1.4142135623730951

4 réponses

Avatar
Benoit Izac
Bonjour,
Le 12/08/2016 à 09:54, ast a écrit dans le message
<57ad809b$0$7131$ :
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 FilesPython35-32libos.py'>
os.getcwd()



'C:Usersjeandesktop'

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
--
Benoit Izac
Avatar
ast
"Benoit Izac" a écrit dans le message de
news:
Bonjour,
Le 12/08/2016 à 09:54, ast a écrit dans le message
<57ad809b$0$7131$ :
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 FilesPython35-32libos.py'>
os.getcwd()



'C:Usersjeandesktop'

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
--
Benoit Izac

ok mais je n'ai jamais vu cela écrit nulle part
Avatar
Benoit Izac
Bonjour,
Le 13/08/2016 à 18:24, ast a écrit dans le message
<57af49bc$0$710$ :
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 FilesPython35-32libos.py'>
os.getcwd()



'C:Usersjeandesktop'

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

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'>}
--
Benoit Izac
Avatar
ast
"Benoit Izac" a écrit dans le message de
news:
Bonjour,
Le 13/08/2016 à 18:24, ast a écrit dans le message
<57af49bc$0$710$ :
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 FilesPython35-32libos.py'>
os.getcwd()



'C:Usersjeandesktop'

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

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'>}
--
Benoit Izac

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