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

Connaitre le contenu d'un module chargé

6 réponses
Avatar
philippe
bonjour
y a t il un moyen simple de connaitre les fonctions présentes dans un
module, une fois qu'on l'a importé.
Par exemple après avoir exécté
from os import *
comment puis je savoir toutes les nouvelles "fonctions" qui sont à ma
disposition ?
philippe

6 réponses

Avatar
Christophe Cavalaria
philippe wrote:

bonjour
y a t il un moyen simple de connaitre les fonctions présentes dans un
module, une fois qu'on l'a importé.
Par exemple après avoir exécté
from os import *
comment puis je savoir toutes les nouvelles "fonctions" qui sont à ma
disposition ?
philippe
Il suffit de faire

import os
dir(os) ou help(os)




dir liste le contenu des objets du module sans aucune autre forme de
traitement. Très pratique mais ça ne donne aucune information sur la
signature ou sur la semantique des symboles trouvés. help ne marche pas
toujours mais il donne un resultat plus complet quand la doc est dispo.



Avatar
philippe
In article <431b1c37$0$32716$, Christophe
Cavalaria wrote:

philippe wrote:

bonjour
y a t il un moyen simple de connaitre les fonctions présentes dans un
module, une fois qu'on l'a importé.
Par exemple après avoir exécté
from os import *
comment puis je savoir toutes les nouvelles "fonctions" qui sont à ma
disposition ?
philippe
Il suffit de faire

import os
dir(os) ou help(os)




dir liste le contenu des objets du module sans aucune autre forme de
traitement. Très pratique mais ça ne donne aucune information sur la
signature ou sur la semantique des symboles trouvés. help ne marche pas
toujours mais il donne un resultat plus complet quand la doc est dispo.


Merci c ce que je cherchais
dir c un peu brut de fonderie ( disons que c peu lisible mais c court
on peut voir si la fonction que l'on cherche est présente)
le help marche aussi chez moi (:-) et là y a tout ce dont j'ai besoin !
philippe




Avatar
R12y
On Sun, 04 Sep 2005 18:08:43 +0200, Christophe Cavalaria wrote:

from os import *
import os





Par curiosité:

Ces deux lignes font la même chose, à savoir importent toutes les
fonctions du module "os". Est-ce qu'il y a des différences subtiles dans
les entrailles de la machine? (plus de place prise en mémoire, ou autre,...)

Merci.


--
SPIP, phpNuke, Plone, opengroupware... c'est bien
CPS c'est mieux: http://www.cps-project.org/
Hébergement de sites CPS: http://www.objectis.org/




Avatar
Christophe Cavalaria
R12y wrote:

On Sun, 04 Sep 2005 18:08:43 +0200, Christophe Cavalaria wrote:

from os import *
import os





Par curiosité:

Ces deux lignes font la même chose, à savoir importent toutes les
fonctions du module "os". Est-ce qu'il y a des différences subtiles dans
les entrailles de la machine? (plus de place prise en mémoire, ou
autre,...)

Merci.


En effet, il y a une grande différence car ces fonctions ne font pas du tout

la même chose, à un petit détail pret :)

import os va demander a Python de charger le module os en mémoire, puis la
lier la variable os vers ce module. Le résultat est exactement équivalent
à :
os = __import__('os')

from os import * est une version spéciale de from os import name. Cela va
charger le module os en mémoire mais cela ne va absolument pas affecter la
variable locale os. En échange, il va prendre le symbole name et l'affecter
à la variable locale main.

C'est équivalent à peut pret à :
name = __import__('os').name

On peut noter la variante from os import name as other qui nous donne
l'équivalent :
other = __import__('os').name

Pour savoir laquelle de ces formes utiliser, il faut savoir qu'il y a 2
considérations importantes :

- la forme from os import * est déconseillée car elle "pollue" l'espace de
nom. Avec une telle notation, tout et n'importe quoi se retrouve accessible
sans aucun vrai contrôle. Si à l'avenir les auteurs du module os ajoutent
un nouveau symbole, cela pourrait causer des bugs. En général, cela ne pose
pas de problème il faut bien dire mais c'est juste mieux de ne pas
l'utiliser.

- la forme from os import symbole ( as ... ) est conseillé en remplacement
de celle au dessus, surtout si vous n'avez besoin que d'une ou de 2
fonctions dans le module.

- la forme import os est la plus conseillée.

Enfin, il reste un dernier avantage à la forme "import os" qui est qu'elle
permet dans une moindre mesure d'avoir un module a qui import un module b
qui importe le même module a.





Avatar
Laurent Pointal
Christophe Cavalaria wrote:

- la forme from os import * est déconseillée car elle "pollue" l'espace de
nom. Avec une telle notation, tout et n'importe quoi se retrouve accessible
sans aucun vrai contrôle. Si à l'avenir les auteurs du module os ajoutent
un nouveau symbole, cela pourrait causer des bugs. En général, cela ne pose
pas de problème il faut bien dire mais c'est juste mieux de ne pas
l'utiliser.


Si si, particulièrement avec os ça pose problème.

Lorsque l'on fair un from os import *, la fonction 'open' es redéfinie
par celle de os... le symptome est qu'on manipule alors un descripteur
de fichier entier au lieu du file habituel.

Bref, from xxx import * est à éviter en général, et particulièrement
pour tout module xxx dont on n'a pas la charge.

A+

Laurent.

Avatar
Laurent Pointal
Laurent Pointal wrote:
Christophe Cavalaria wrote:


- la forme from os import * est déconseillée car elle "pollue" l'espace de
nom. Avec une telle notation, tout et n'importe quoi se retrouve accessible
sans aucun vrai contrôle. Si à l'avenir les auteurs du module os ajoutent
un nouveau symbole, cela pourrait causer des bugs. En général, cela ne pose
pas de problème il faut bien dire mais c'est juste mieux de ne pas
l'utiliser.



Si si, particulièrement avec os ça pose problème.

Lorsque l'on fair un from os import *, la fonction 'open' es redéfinie
par celle de os... le symptome est qu'on manipule alors un descripteur
de fichier entier au lieu du file habituel.

Bref, from xxx import * est à éviter en général, et particulièrement
pour tout module xxx dont on n'a pas la charge.

A+

Laurent.


Oups
'fair' => fait,
'es' => est
et pendant qu'on y est
'symptome' => symptôme