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 :

Déclaration globale obligatoire ?


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Par défaut Déclaration globale obligatoire ?
    Bonjour,

    Dans tous ce que je lis sur Python, il est dit qu'il ne faut pas utiliser global, c'est du travail de gouniafié, soit !
    Mais si dans le code suivant je ne met pas global, la fonction ne me renvoi pas mes valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def ModifChaine():
        # global varChoix01, varChoix02
        varChoix01 = "toto"
        varChoix02 = "tati"
     
    ModifChaine()
    print(varChoix01)
    print(varChoix02)
    Là j'ai un msg d'erreur : normal

    alors que là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def ModifChaine():
        global varChoix01, varChoix02
        varChoix01 = "toto"
        varChoix02 = "tati"
     
    ModifChaine()
    print(varChoix01)
    print(varChoix02)
    Ca marche, il faut faire comment pour ne pas utiliser global ?

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je préfère pour ma part que l'action d'une fonction soit "étanche", et en particulier qu'elle n'ait aucune action qui modifie directement son extérieur ("effet de bord"). Il faut donc utiliser seulement les arguments passés et les valeurs retournées.

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def ModifChaine():
        return "toto", "tati"
     
    varChoix01, varChoix02 = ModifChaine()
    print(varChoix01)
    print(varChoix02)
    On ne peut pas toujours éviter le "global", mais il faut au moins le limiter strictement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Par défaut
    Super, j'avais zappé RETURN, une envie de me mettre des baffes des fois.
    Je te remercie, bonne journée

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

Discussions similaires

  1. [WD11] Déclaration globales dans une fenêtre interne
    Par Redg9 dans le forum WinDev
    Réponses: 2
    Dernier message: 01/06/2010, 10h41
  2. Réponses: 0
    Dernier message: 05/06/2008, 12h43
  3. Iostream : Déclaration globale impossible ?
    Par Nikolas dans le forum SL & STL
    Réponses: 12
    Dernier message: 15/02/2007, 07h33
  4. Abstract class (déclaration globale)
    Par choas dans le forum VB.NET
    Réponses: 4
    Dernier message: 05/02/2007, 20h27
  5. Réponses: 13
    Dernier message: 01/06/2006, 17h20

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