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 :

comment faire en sorte qu'une variable devienne globale?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut comment faire en sorte qu'une variable devienne globale?
    Bonjour chers internautes,

    (Je peux vous appeler comme ça j'espère?)

    Je poste cette discussion parce que malgré mes recherches et mes efforts pour rendre une variable globale...
    Et bien ça ne marche pas COMPLETEMENT.
    Un peu, mais pas complètement...
    Et je dois admettre que c'est assez déconcertant.

    Notons ce programme, que je fais en simplifié, voilà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    e = 0
    from abc import c
     
    c()
    Voila, ça, c'est le programme d'où je lance cette fonction.
    Bon, je dis abc et c, mais les noms n'ont pas d'importance dans mon cas.
    Vous pouvez l'appeler Pierre Paul ou Jacques, ça n'a pas d'importance.

    Ensuite, les fonctions, dans un autre fichier python appelé abc, donc (sinon, je n'utiliserai pas from blablabla import bidule).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def a():
               global e
               print(e)
     
    def c():
               global e
               e = input("quelle valeur pour \"e\" ?")
               a()
    Et ça me dit, après avoir correctement exécuté la fonction c(), et donc en étant en train d'essayer d'exécuter la fonction a(), que la variable e n'est pas définie.
    Pourtant j'ai mis le "global" qui va bien, mais comme vous le voyez, ce mot béni n'a d'effet que sur la première variable qui est lancée.
    C'est triste.

    Voilà, si vous pensez pouvoir m'aider, je vous prierai de bien vouloir le faire et vous en serait EXTREMEMENT EXTREMEMENT reconnaissant.
    A Bientôt!

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,
    Si je mets le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def a():
               global e
               print(e)
     
    def c():
               global e
               e = input("quelle valeur pour \"e\" ?")
               a()
    dans un fichier turlu.py et que je lance la console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> from turlu import c
    >>> c()
    quelle valeur pour "e" ?12
    12
    >>>
    çà fonctionne comme attendu.
    note: ce qui veut dire que le problème que vous avez est mal décrit par les informations que vous donnez.

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

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut
    J'en ai assez, je pense que c'est mon ordi qui fait de la mauvaise volonté.

    J'en ai marre, j'en ai marre, j'en ai marre, j'en ai marre de dire que j'en ai marre, etc.

    Voilà, même ce programme tout basique que tu viens de me donner, witricks, et bah il marche pas! C'est génial! Si les choses marchaient pas comme ça, l'humanité se porterait comment?
    Je ne suis pas en train de dire que c'est ton programme qui ne fonctionne pas, mais mon ordinateur.

    Vraiment je sature d'avoir ce problème.

    Habituellement, vous apportez des réponses très rapidement, je vous en remercie, mais là, quelques soient les solutions que je cherche, aucune ne marche.

    C'est comme ça chez moi en informatique, ça marche avec les autres et pas avec moi.

    Bon, je vais réessayer, mais je pense que les réponses qui vont arriver après ne serviront pas (pour moi en tout cas, peut-être que si pour d'autres personnes quo ont rencontré le même problème que moi).
    Merci pour tout et à bientôt.

    *C'est le moment ou normalement on me dit "mais t'a pas oublié tel truc, quand même?" :'(*

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par Palisthe Voir le message
    Voilà, même ce programme tout basique que tu viens de me donner, witricks, et bah il marche pas! C'est génial! Si les choses marchaient pas comme ça, l'humanité se porterait comment?
    Je ne suis pas en train de dire que c'est ton programme qui ne fonctionne pas, mais mon ordinateur.
    "il marche pas" ne dit rien sur le problème rencontré lorsque vous avez essayé de le faire marcher.
    Plutôt que de geindre, allez manger, voir un film,... vous changer les idées et reprenez tout çà à tête reposée dans quelques dizaines d'heures. Ce sera bien plus efficace.

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

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut
    Ça y est, j'ai fait les trois, et maintenant le programme fonctionne. :)

    Le gros, pas le petit, celui la, j'ai pas réessayer.
    Au passage, le petit ne fonctionnait pas car il ne trouvait pas le fichier dans lequel il y avait la fonction. Pourtant, j'ai tout fait comme il faut...
    Mé çè pô grav.

    Bon, aller, a bientôt.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut Problème trouvé
    J'ai trouvé le problème, du moins je pense, et là, je ne pense pas qu'il y ait de solutions: le mot clé "global" ne fonctionne tout simplement pas.
    Et c'est assez triste.
    Comme je l'ai dit, malgré toutes les recherches que j'ai mené, aucune des solutions que j'ai trouvé n'a résolu le problème.
    Quelque soit l'emplacement du mot global dans la fonction, il n'a absolument pas l'effet qu'il devrait avoir.

    Le programme que je lance est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a = 0
     
    from ooo import oo
     
    oooooo()
    Celui de la fonction est ce dernier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def oo():
           global a
           print("a vaut ", a,".")
     
    if __name__ == "__main__":
                    oooooo()

    Voilà, rien que pour vérifier que la variable a est bien retrouvée.
    Pas de chance, je tombe sur une exception de type NameError. a n'a pas été défini.
    global ne marche pas?

    Pensez vous?

    Merci pas avances pour vos réponses.

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/03/2016, 20h22
  2. Réponses: 4
    Dernier message: 05/11/2010, 09h32
  3. Réponses: 6
    Dernier message: 26/05/2010, 22h17
  4. Réponses: 5
    Dernier message: 16/10/2008, 13h36
  5. Réponses: 3
    Dernier message: 02/08/2007, 17h06

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