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 :

SyntaxError dans IDLE seulement


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 7
    Par défaut SyntaxError dans IDLE seulement
    Bonjour,


    Le code qui va suivre est une partie d’un code utilisé pour comprendre la différence entre les mots-clés nonlocal et global. Ce code est présenté comme correct sur dotnetperls.com, et quand je l’éxecute sur l’environnement Python simplifié il fonctionne.
    Cependant, exécuté dans IDLE 3.7.0, j’obtiens SyntaxError : invalid syntax.
    Quelqu’un pourrait-il m’expliquer ce comportement avec IDLE 3.7.0 ?

    Merci d’avance


    Nom : Capture d’écran 2018-07-26 à 02.09.22.png
Affichages : 192
Taille : 49,6 Ko

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Le message d'erreur t'indique à quelle ligne se trouve l'erreur.

    Copie le message d'erreur complet, ce sera plus utile.

  3. #3
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    "Nonlocal is similar in meaning to global. But it takes effect primarily in nested methods. It means "not a global or local variable." So it changes the identifier to refer to an enclosing method's variable."

    Si tu définis ta variable en dehors de Method(), elle ne sera pas référencée et modifiée.
    Je comprends que Nonlocal ne permet de ne référencer que des variables utilisées dans des procédures imbriquées (nested).

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 7
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Le message d'erreur t'indique à quelle ligne se trouve l'erreur.

    Copie le message d'erreur complet, ce sera plus utile.
    le voici donc :

    Nom : Capture d’écran 2018-07-27 à 22.24.49.png
Affichages : 108
Taille : 32,1 Ko

  5. #5
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2018
    Messages : 16
    Par défaut
    le probleme vien du fait que tu passes par l’interpréteur de commande

    stock ce code dans un editeur texteur et sauvegare le en script.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def met():
        def met2():
            nonlocal value
            value = 100
        value = 10
        met2()
        print(value)
     
    met()
    si tu lances la commande
    python script.py

    ça ne génère pas d'erreur

    avec l’interpréteur de commande il faut définir ta/tes fonctions puis faire entrée pour reprendre la main et lancer la fonction dans un seconde temps
    je ne sais pas si je suis bien clair
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> def met():
    ...     def met2():
    ...             nonlocal value
    ...             value = 100
    ...     value = 10
    ...     met2()
    ...     print(value)
    ...
    >>> met()

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 7
    Par défaut
    Merci bien BobbyBro !

    Je vous offre un pouce vers le haut.

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

Discussions similaires

  1. Indentation dans Idle
    Par KonTiKI dans le forum Général Python
    Réponses: 4
    Dernier message: 23/05/2016, 22h14
  2. Réponses: 5
    Dernier message: 08/01/2009, 13h45
  3. Réponses: 6
    Dernier message: 21/09/2007, 23h44
  4. Réponses: 2
    Dernier message: 23/11/2003, 18h44
  5. Réponses: 2
    Dernier message: 27/05/2002, 19h46

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