web-dev-qa-db-fra.com

Erreur: Déclaration attendue, trouvé py: Dédent

nous sommes disposés/forcés à développer une petite application Web pour l'université. Maintenant, nous avons commencé et tout semble aller pour le mieux, jusqu'à ce que cette étrange erreur se produise.

"Déclaration attendue, trouvée py: Dedent"

L'erreur est provoquée par les lignes de code suivantes:

def get_reset_token(self, mysql, userid):
    try:
        conn = mysql.connect()
        cursor = conn.cursor()
        cursor.execute("""SELECT token FROM tralala_reset_password 
                       WHERE uid=(%s)""", userid)
        data = cursor.fetchall()
        cursor.close()
        conn.close()
        return data[0]
    except Exception as e:
        app.logger(str(e))
        return ""

Pycharm a commencé à marquer le "retour" "".

Meilleures salutations,

Marian

7
Keine-Ahnung

Problème résolu en ignorant l'erreur. Copié dans un autre éditeur et rien ici. Cela semble être une erreur de pycharm.

Meilleures salutations,

Marian 

9
Keine-Ahnung

Je me gratifiais aussi la tête pendant un bon moment et le trouvais enfin.

La chose est en dehors de "pycharm n'a pas reconnu certains caractères" portée

Quand vous écrivez ceci:

class Foo:
   def complicated_method(self):
       for f to self.whatever:
           # plenty of code goes here
           pass
   def another one():
       # here to
       pass

Et puis vous décidez de le réécrire:

class Foo:
   def complicated_method(self):
           # plenty of code goes here  <- mistakenly leaved unindented, many unseen errors here
           pass
   def another one(self):
       # here to
       pass
    ....
   def do(self):
       for f in self.whatever:
           self.complicated_method() <- here will be Py:DEDENT

Refactoriser les méthodes longues, si vous le pouvez, et Py:DEDENT ne vous dérangera plus jamais

1
im_infamous

Mon problème a été causé par le décalage d'indentation. La plupart du document était mis en retrait avec des espaces, mais certains onglets ont été copiés et ont entraîné l'erreur Py: DEDENT. Le remplacement des onglets par des espaces a corrigé l'erreur.

0
David Warnke