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

Programmation multimédia/Jeux Python Discussion :

Gérer des modules


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut Gérer des modules
    Bonjour à tous,

    je me tourne vers vous à cause d'un problème que je rencontre via la gestion de modules. Je fais des fichiers tests pour apprendre mais je rencontre un problème. Je dispose de deux fichiers. Le premier qui est le principal s'appelle fichier_interaction_modules. Mon deuxième fichier, mon module, se nomme module_a.

    quand je ne créer pas de fonction dans le module_a, je sais importer ses variables, les utiliser et les modifier. Mon problème survient au moment ou je défini une variable. Voyez par cet exemple:

    module_a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    import pygame
    import os
    from pygame.locals import *
     
    def calcul():
        a = 8
        b = 8
    fichier_interaction_modules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    import os
    import pygame
    from pygame.locals import *
     
    pygame.init()
     
    os.environ["SDL_VIDEO_WINDOWS_POS"] = "0 , 28" #placement de la fenêtre sur l'écran
     
    fenetre = pygame.display.set_mode((10, 10), pygame.RESIZABLE) #définition valeur de l'écran
     
    import module_a
     
    module_a.calcul()
     
    g = a + b
    print(g)
    Sauriez-vous me dire comment faire pour que g de mon fichier principal s'exécute s'il vous plaît? car j'ai essayé en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g = module_a.calcul().a + module_a.calcul().b
    mais ça ne marche pas non plus.
    Merci à vous tous

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 240
    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 240
    Points : 36 696
    Points
    36 696
    Par défaut
    Salut,

    Avant de vous lancer dans les modules peut être devriez vous apprendre les fonctions et écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def calcul(a, b):
         return a + b
    note: si la fonction calcul était dans le même module que l'appelant, vous auriez le même problème car il est impossible d'accéder aux variables locales d'une fonction.

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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup, votre exemple m'a permis de trouver où était ma lacune, je n'avais pas intégré le fait que les fonctions ne renvoyaient aucune valeur sans un return et qu'il était impossible de récupérer une variable mise dans une fonction.

    Du coup j'ai essayé et ça à marché, j'ai même réussi à faire fonctionner 3 programmes s'appelant les uns les autres:

    module_a : module me permettant de faire le calcul a + b
    module_b : module me permettant de faire l'affichage du résultat d'a+b
    fichier principal: import module_b

    fichier principal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import os
    import pygame
    from pygame.locals import *
    import module_b
    module_b.affichage()
    module_b:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import pygame
    import os
    from pygame.locals import *
     
    def affichage():
        import module_a
        module_a.calcul()
        print("valeur de C : ",module_a.calcul())
    module_a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import pygame
    import os
    from pygame.locals import *
     
    def calcul():   
        a = 8
        b = 8
        c = a + b
     
        return c
    l'importation du module_a par le module_b fonctionne correctement et pareil pour l'importation du module_b dans mon fichier principal. Le résultat final quand je lance le script principal m'apparaît bien, merci encore.

    Par contre là mon soucis concerne la gestion de module. Je sais gérer les modules classiquement mais moins bien avec des fonctions dans les dits modules. Dans mon code, le script principal importe le module_b se trouvant dans le package modules. Le module_b importe le module_a se trouvant dans le package sous_modules.

    Quand j'exécute le module_b et que j'appelle la fonction affichage() dans la boîte de dialogue, le résultat m'apparaît bien. Par contre quand j'exécute mon fichier principal il me dit que le module_b ne trouve pas le module_a. Pourtant j'ai bien spécifié à chaque fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from nom_package import nom_module
    dans chaques fichiers. Une idée s'il-vous-plaît?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 240
    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 240
    Points : 36 696
    Points
    36 696
    Par défaut
    Salut,

    Maintenant que vous avez des fonctions qui marchent, il faut vous intéresser à ce que sont modules/packages/... et commencer par ouvrir un tuto. qui en fait le tour.

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

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup pour votre réponse et la documentation fournie. En fait un concept que je n'avais pas saisi, c'est que python à l'air de ""ramener"" le module importé dans le répertoire courant du script principal.

    Du coup forcément il trouvait pas le dossier contenant le deuxième module que le module_b essayait d'importer car il n'existait pas.

    J'ai donc réglé le problème comme ça dans le module_b:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from modules.sous_modules import module_a
    J'ai donc compris qu'il fallait que je refasse tous le chemin depuis le fichier principal jusqu'au module_a. Merci énormément, mon problème étant réglé, je passe donc ce sujet en résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Gérer les droits sur des modules !
    Par furth dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/06/2007, 13h01
  2. [XSLT] Comment procéder pour gérer des langues ?
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/03/2005, 12h01
  3. Comment (si possible) gérer des dll en Asm?
    Par @drien dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 06/01/2004, 16h59
  4. Recherche des dépendances des modules
    Par slowpoke dans le forum Mandriva / Mageia
    Réponses: 9
    Dernier message: 11/12/2003, 09h49
  5. Une unité pour gérer des très grands nombres
    Par M.Dlb dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2003, 13h07

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