Partage
  • Partager sur Facebook
  • Partager sur Twitter

interconnexion des modules, fonctions et variables

    2 septembre 2023 à 1:13:59

    Bonjour, (débutant en python) j'essaye de rendre une variable modifiable (de manière persistante) à travers différents modules et fonctions.

    Je ne sais pas si c'est seulement possible. J'ai essayer de trouver sur différents cours ou avec chat Gpt. mais je n'arrive pas à trouver de réponse qui fonctionne dans ce cas.

    Je vous poste ces 3 modules (très courts). En espérant recevoir vos lumières. merci.

    module "test1"

    from test2 import maVar
    from test2 import maFonction1
    from test3 import maFonction2
    
    
    maFonction1()
    maFonction2()
    
    print(maVar)


    module "test2"

    maVar = 1
    
    def maFonction1():
        global maVar
        maVar += 3


    module "test3"

    from test2 import maVar
    
    def maFonction2():
        global maVar
        maVar += 1






    • Partager sur Facebook
    • Partager sur Twitter
      2 septembre 2023 à 8:23:44

      Pour fabriquer une variable vraiment globale, il faut y accéder comme attribut du module: import test2 et test2.mavar.

      Préférez passage de paramètres et retour des fonctions plutôt qu'utiliser des variables aussi globales...

      -
      Edité par mps 2 septembre 2023 à 9:26:59

      • Partager sur Facebook
      • Partager sur Twitter
        2 septembre 2023 à 9:26:37

        Bonjour mps. merci de votre réponse. mais même en essayant d'importer "maVar" de votre façon, le problème persiste.

        module 1: "test1"

        import test2
        from test3 import maFonction2
        
        
        
        
        test2.maFonction1()
        maFonction2()
        
        print(test2.maVar)

        module 2: "test2"

        maVar = 1
        
        def maFonction1():
            global maVar
            maVar += 3

        module 3: "test3"

        import test2
        
        def maFonction2():
            test2.maVar
            maVar += 1

        je vous renseigne aussi le journal d'erreur:

        Traceback (most recent call last):
          File "C:\Users\Victorien\Desktop\test1.py", line 8, in <module>
            maFonction2()
          File "C:\Users\Victorien\Desktop\test3.py", line 5, in maFonction2
            maVar += 1
            ^^^^^
        UnboundLocalError: cannot access local variable 'maVar' where it is not associated with a value

        ai-je mal placé les "test2.maVar"?

        de plus je ne vois pas la différence entre le "

        from test2 import maVar


        et

        import test2
        test2.maVar

        merci de votre réponse.


        • Partager sur Facebook
        • Partager sur Twitter
          2 septembre 2023 à 10:07:16

          Si vous aviez compris ce que je raconte, vous auriez écrit test2.maVar += 1.

          Problème: comprendre demande d'avoir un peu potassé la POO avec Python et pour l'instant, vous ne savez pas encore ce qu'une erreur comme UnboundLocalError (qu'on recontre lorsqu'on travaille un peu les fonctions) veut dire...

          Ouvrez un tuto, apprenez les bases et éviter de vous lancer dans ces constructions que vous ne comprenez pas... Vous  allez juste mémoriser de mauvaises habitudes dont il sera difficile  de se défaire.

          • Partager sur Facebook
          • Partager sur Twitter
            2 septembre 2023 à 22:30:39

            ok merci de votre réponse.
            • Partager sur Facebook
            • Partager sur Twitter

            interconnexion des modules, fonctions et variables

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown