web-dev-qa-db-fra.com

Erreur "Un bloc en retrait"?

Je ne comprends pas pourquoi python donne une erreur "Bloc d'indentation attendu"?

""" This module prints all the items within a list"""
def print_lol(the_list):
""" The following for loop iterates over every item in the list and checks whether
the list item is another list or not. in case the list item is another list it recalls the function else it prints the ist item"""

    for each_item in the_list:
        if isinstance(each_item, list):
            print_lol(each_item)
        else:
            print(each_item)
17
kartikeykant18

Vous devez indenter la docstring après la définition de la fonction (lignes 3, 4):

def print_lol(the_list):
"""this doesn't works"""
    print 'Ain't happening'

Dentelé:

def print_lol(the_list):
    """this works!"""
    print 'Aaaand it's happening'

Ou vous pouvez utiliser # commenter à la place:

def print_lol(the_list):
#this works, too!
    print 'Hohoho'

Vous pouvez aussi voir PEP 257 à propos de docstrings.

J'espère que cela t'aides!

25
aIKid

J'ai aussi vécu cela par exemple:

Ce code ne fonctionne pas et obtient l'erreur de bloc voulue.

class Foo(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
pub_date = models.DateTimeField('date published')
likes = models.IntegerField()

def __unicode__(self):
return self.title

Cependant, lorsque j'appuie sur l'onglet avant de taper l'instruction return self.title, le code fonctionne.

class Foo(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
pub_date = models.DateTimeField('date published')
likes = models.IntegerField()

def __unicode__(self):
    return self.title

Espérons que cela aidera les autres.

4
Jaky71