cerhu > comp.lang.* > comp.lang.python

Fabrice (12/06/2019, 11h11)
Bonjour,

j'ai créé dans un objectif d'enseignement un module Python qui possède
une fonction DonnéeSuivante() qui porte bien son nom ;-)

Au premier import, mon programme fonctionne bien et je peux récupérer
les données au fur et à mesure à partir de la première donnée.

J'intègre mon programme dans un fichier jupyter. Tout se passe donc dans
une même session.

J'aimerai lorsque je passe à l'amélioration de mon programme qu'à
l'import du module celui-ci soit réellement ré-importé et que les
variables soient réinitialisées pour que la fonction DonnéeSuivante()
recommence à son comportement initial sans que l'utilisateur ait à s'en
soucier.

Comment faire ?

Cordialement,
Fabrice.
Pierre Maurette (12/06/2019, 13h04)
Fabrice :
> Bonjour,
> j'ai créé dans un objectif d'enseignement un module Python qui possède une
> fonction DonnéeSuivante() qui porte bien son nom ;-)
> Au premier import, mon programme fonctionne bien et je peux récupérer les
> données au fur et à mesure à partir de la première donnée.
> J'intègre mon programme dans un fichier jupyter. Tout se passe donc dans une
> même session.
> module celui-ci soit réellement ré-importé et que les variables soient
> réinitialisées pour que la fonction DonnéeSuivante() recommence à son
> comportement initial sans que l'utilisateur ait à s'en soucier.
> Comment faire ?


Il me semble que je ne ferais pas de cette façon (mais j'ignore
Jupyter, je préfère Jupyler).
Pourquoi pas:

import sys
....
if 'nomdevotremodule' not in sys.modules:
import nomdevotremodule
else
nomdevotremodule.moninit()

(nomdevotremodule.moninit à écrire)

Sinon vous avez peut-être reload(), qui devient imp.reload() puis
importlib.reload() en Python 3 puis Python 3.4. Mais ça va dépendre de
ce à quoi est lié le module, c'est typiquement le genre de truc qui
fonctionne dans un premier temps puis se met à faire des trucs étranges
après telle ou telle modification.
Avec la première solution, je contrôle: je veux recharger le module
pour qu'il redémarre une séquence (si j'ai bien compris), alors je lui
dis simplement de redémarrer la séquence.
ast (12/06/2019, 14h28)
bonjour

>>> import mymod
>>> import sys
>>> del(sys.modules['mymod'])
>>> import mymod


ou bien reload

import importlib # python 3.4 ou plus
importlib.reload(mymod)

Le 12/06/2019 à 11:11, Fabrice a écrit :
[..]
Pascal J. Bourguignon (12/06/2019, 19h21)
Fabrice <professeur.leclercq> writes:

[..]
> recommence à son comportement initial sans que l'utilisateur ait à
> s'en soucier.
> Comment faire ?


En BASIC, il y avait READ pour lire la DATA suivante, et RESTORE, pour
revenir à la première DATA.

Il suffirait d'implémenter une fonction similaire à RESTORE, et à
l'appeler dans le code d'initialisation du module.
Fabrice (13/06/2019, 11h46)
Bonjour Pierre, Ast et Pascal,

La solution me semble trop compliquée pour mon objectif (un cours sur le
traitement des données, le but n'est pas d'apprendre Python).

Je vais donc suivre les conseils de Pierre et Pascal et créer une
fonction RemiseAZero().

Merci à tous les trois.
cordialement,
Fabrice.
Nicolas (13/06/2019, 14h20)
Bonjour,

Plutôt qu'une fonction RemiseAZero(), je ferai une fonction
Initialisation().
La fonction fait la même chose.
Mais pour l'esprit, c'est, à mon avis, plus clair. La procédure est
toujours la même : Initialisation, récupération de données.

Nicolas

Le 13/06/2019 à 11:46, Fabrice a écrit :
[..]
Fabrice (15/06/2019, 09h30)
Le 13/06/2019 à 14:20, Nicolas a écrit :
> Plutôt qu'une fonction RemiseAZero(), je ferai une fonction
> Initialisation().
> La fonction fait la même chose.
> Mais pour l'esprit, c'est, à mon avis, plus clair.


Effectivement.
cordialement,
Fabrice

Discussions similaires
Import d'un sous module

import d un module depuis un second module

Entrangeté à l'import d'un module

bug sur import de formulaire / module ?


Fuseau horaire GMT +2. Il est actuellement 19h35. | Privacy Policy