#python #return #indentation
#python #Возврат #отступ
Вопрос:
У меня есть это:
if colorkey is not None:
if colorkey is -1:
colorkey = image.get_at((0,0))
image.set_colorkey(colorkey, RLEACCEL)
return image, image.get_rect()
Это говорит мне, что «return» находится вне функции.
Когда я меняю его на это:
if colorkey is not None:
if colorkey is -1:
colorkey = image.get_at((0,0))
image.set_colorkey(colorkey, RLEACCEL)
return image, image.get_rect()
Это просто говорит мне, что есть неожиданный отступ. Как мне обойти это?
Комментарии:
1. Являются ли эти инструкции внутри функции?
2. Невозможно прочитать. Пожалуйста, правильно отформатируйте свой код.
3. Можете ли вы отредактировать свой post, чтобы правильно набирать код и отображать отступ так, как он есть в вашем файле? (отступ на 4 пробела, чтобы он отображался как код)
4. Выполнено. Теперь это должно быть доступно для чтения.
5. Вы говорите, что они находятся внутри функции, но вы не опубликовали определение функции. Просмотр всей функции, определения И тела, поможет нам сказать вам, что не так.
Ответ №1:
В python области видимости определяются тем же уровнем отступа вместо фигурных скобок (т.Е. {}
), что и в других языках.
Если вы пишете функцию, вам нужно убедиться, что все тело функции имеет одинаковый уровень отступа — будь то одинаковое количество пробелов или одинаковое количество табуляций (смешивание пробелов и табуляций может привести к реальной путанице).
В вашем случае правильный отступ будет выглядеть примерно так (я не знаю точно, потому что вы не опубликовали код для всей функции):
def function():
<indent>if colorkey is not None:
<indent><indent>if colorkey is -1:
<indent><indent><indent>colorkey = image.get_at((0,0))
<indent>image.set_colorkey(colorkey, RLEACCEL)
<indent>return image, image.get_rect()
Ответ №2:
после if colorkey is not None:
наличия 2 отступов требуется только один
Комментарии:
1. Ну, на самом деле это 8 пробелов, которые могут быть 1, 2, 4 или 8 отступами. Учитывая, что следующая строка начинается с 9 пробелов, скорее всего, это будет 8 отступов. Но в любом случае python это не волнует, поскольку он интерпретирует ее только как одну.
2. Узнайте кое-что о процессе лексикации, прежде чем обсуждать это. В любом случае это ровно один отступ. Предыдущая строка имеет отступ с
x
пробелами; текущая строка имеет отступ сy
пробелами;x < y
-> добавлен одинindent
токен. Конец истории.3. @delnan: Существует несколько способов интерпретировать слово «отступ». Моя ссылка на множественные отступы была в контексте редактора. Я действительно сказал, что «python … интерпретирует ее как только одну «.
4. @recursive: Да, хотя в контексте этого вопроса, я думаю, мы должны согласиться использовать «отступ» только для того, что Python рассматривает это. Python генерирует синтаксические ошибки, и ему все равно, сколько пробелов использует текстовый редактор OP.