2015-10-09 2 views
1

Есть ли способ избежать ошибок «ожидаемого блока отступа» в Python без добавления пароля к функции?Отмеченный отступ блока в python

def exclamation(s): 
# s += "!!!" 
# return s 

print exclamation("The indented horror") 

Приведенный выше код приводит к ошибке в строке 5. Да, удалите комментарии, и код работает нормально. Однако в отладочных материалах я часто оказываюсь в подобной ситуации. Это просто зависание правила вне поля и что-то, что мне нужно, чтобы привыкнуть или есть способы обойти это?

+1

Обратите внимание, что «что-то» может быть строка документации, так что если вы * «закомментировать тело» * с '«»" ', то функция будет компилировать. – jonrsharpe

ответ

3

В определении функции должно быть что-то, чтобы избежать SyntaxError.

Вопрос заключается в том, что переводчик effectively ignore comments during parsing, и поэтому в то время как к людям это может выглядеть как что-то есть, к парсеру он пуст.

Как отметил jonrsharpe в комментарии, вы можете использовать docstrings, чтобы «прокомментировать» ваш код, и он все еще работает. Это связано с тем, что docstring является, по сути, нормальной строкой. Таким образом, это будет проанализировано и не вызовет SyntaxError. Для того, чтобы ваш пример кода это будет выглядеть так:

def exclamation(s): 
    '''s += "!!!" 
    return s''' 

# This should print None as nothing is now returned from the func 
print(exclamation("The indented horror"))