IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Newbie en Python : Découper mon programme en modules


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut Newbie en Python : Découper mon programme en modules
    [QUOTE=L'AMI Yves;10614525]Bonjour-bonsoir à tous.

    Je l'ai déjà dit, vous savez que je débute en Python.

    Merci à ceux qui m'ont répondu pour la taille de police des widgets. Quelqu'un m'a dit qu'une certaine solution pourrait avoir des répercutions plus étendues que prévu : si je le constate, je saurai pourquoi.

    Aujourd'hui, mon problème est celui-ci : sachant que mon programme va s'étoffer, j'essaie de commencer à le découper en plusieurs fichiers. Comme j'ai déjà écrit ce que j'appelle "Premier", comme le premier stade du déroulement de mon application, il y avait dans mon fichier (.py) d'origine une suite d'instructions commençant par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def Premier():
        quelques
        instructions
    J'ai coupé ce "paquet" dans mon fichier source, et je l'ai recopié dans le même répertoire dans un fichier nommé "Premier.py", et j'ai ajouté au début de mon fichier source initial la ligne

    et je pensais n'avoir rien d'autre à modifier (à part la ligne de codage utf8 au début de Premier.py), mais ça ne marche pas. J'ai des messages d'erreur sur "import". J'ai essayé divers trucs qui ont tous foiré, c'est pourquoi je viens de nouveau vous solliciter.

    Merci d'avance

    AMIcalement.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 742
    Par défaut
    Salut,

    Citation Envoyé par L'AMI Yves Voir le message
    J'ai essayé divers trucs qui ont tous foiré, c'est pourquoi je viens de nouveau vous solliciter.
    On essaie pas n'importe quoi, on ouvre un tuto qui explique tout çà. Puis on essaie de comprendre quelles vont être les conséquences côté code, enfin on essaie d'appliquer pour voir si on a compris.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut
    Merci, Wiztricks. En fait, je n'ai pas essayé n'importe quoi, et j'avais (entre autres) consulté ce tuto. Mais (en tous cas pour moi) il n'est vraiment pas très clair : au début, on a l'impression qu'on peut importer directement depuis le répertoire courant, puis ensuite on s'apreçoit qu'il faut le transformer en paquet (__init__.py, que j'avais omis) et il ne faut pas se mélanger entre nom de fichier (.py) et nom de fonction contenu dans le fichier. Bon, maintenant, ça y est.

    Mais du coup, je tombe sur un deuxième (d'une longue série ?) problème : dans mon fichier initial, il y avait la définition de widgets, avec des IntVar pour dialoguer avec l'utilisateur. Voila que maintenant, elles sont définies dans le programme qui les crée, et référencées dans celui que j'importe, et là, IDLE râle. Suffit-il de les déclarer globales ?

    Encore merci.

    AMIcalement.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 742
    Par défaut
    Citation Envoyé par L'AMI Yves Voir le message
    Mais (en tous cas pour moi) il n'est vraiment pas très clair : au début, on a l'impression qu'on peut importer directement depuis le répertoire courant.
    C'est çà le propre d'un bon tuto. on le lit une fois, on comprends pas trop et on zappe un tas de trucs, puis on pratique un peu et on le relit pour comprendre ce que çà raconte avec l'éclairage d'une petite expérience. Certains bouts qu'on avait zappé commencent à prendre un sens d'autres restent très gris.

    Citation Envoyé par L'AMI Yves Voir le message
    Suffit-il de les déclarer globales ?
    Et non car la portée d'une variable globale est limité au module.
    Mais replongez vous dans ce chapitre du tuto. avec cette question en tête, vous allez y trouver la réponse (car elle y est présentée plusieurs fois).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut
    Bon, alors il va me falloir être plus modeste, et m'y replonger... Merci.

    AMIcalement.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 742
    Par défaut
    Citation Envoyé par L'AMI Yves Voir le message
    Bon, alors il va me falloir être plus modeste, et m'y replonger... Merci.
    2nd paragraphe du chapitre 6.1:
    Chaque module possède sa propre table de symboles, utilisée comme table de symboles globaux par toutes les fonctions définies par le module. Ainsi l’auteur d’un module peut utiliser des variables globales dans un module sans se soucier de collisions de noms avec des variables globales définies par l’utilisateur du module.
    Donc déjà vous savez que la portée d'une variable est réduite au module.
    Puis çà dit:
    Cependant, si vous savez ce que vous faites, vous pouvez modifier une variable globale d’un module avec la même notation que pour accéder aux fonctions : nommodule.nomelement.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Découper mon programme en plusieurs classes
    Par 1abdou1 dans le forum JavaFX
    Réponses: 6
    Dernier message: 12/03/2015, 23h53
  2. executer mon programme python sous lunix
    Par nancy maman dans le forum Général Python
    Réponses: 17
    Dernier message: 06/10/2011, 21h43
  3. [Boost Python] Exécuter un script à l'extérieur de mon programme
    Par Mast3rMind dans le forum Interfaçage autre langage
    Réponses: 2
    Dernier message: 13/04/2011, 21h51
  4. Erreur dans mon programme en Python
    Par florichoute dans le forum Général Python
    Réponses: 1
    Dernier message: 28/04/2009, 15h08
  5. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo