2015-09-03 4 views
2
def list_function(x): 
    return x[1] += 3 

Я хочу сделать это, но, видимо, я не могу. Я понимаю, я могу это сделатьОшибка синтаксиса возврата Python

x[1] += 3 
return x 

но, я хотел сохранить его на одной линии. Всегда ли возврат всегда должен быть на собственной линии, а если нет, то зачем это нужно в этом конкретном случае?

+3

Проблема не в возврате, а в том, что 'x [1] + = 3' не является выражением, это полный оператор и, следовательно, принадлежит к его собственной строке – WorldSEnder

+0

А, это было мое подозрение, но я надеялся, что-то вроде этого может обойти это 'return (x [1] + = 3)'. Спасибо за помощь! – cerule

+2

В качестве примечания стороны 'return x [1] + = 3;' является допустимым кодом C, но это эквивалентно 'x [1] + = 3; return x [1]; '. –

ответ

2

Вы можете получить произвольное выражение после оператора возврата, то есть что-то, что дает возвращаемое значение. Назначение, включая дополнительные присвоения, такие как x[1] += 3, - это выражения заметок в Python. Они являются заявлениями и, как таковые, не дают значения, поэтому они не могут использоваться после return.

Если вы настаиваете на все на одной линии, вы, конечно, можете написать

x[1] += 3; return x 

Однако, я не вижу никакой веской причины, чтобы сделать это.

+0

А, спасибо. Я согласен с вами в последней части. Это технически одна линия, но не то, что я имел в виду, и я считаю, что вы это поняли. – cerule

1

От documentation -

return_stmt :: = "возвращение" [expression_list]

Возвращение заявление можно следовать только выражениями. expression_list это -

expression_list :: = выражение ("" выражение) * [ ""]

Но x[1] += 1 является augmented assignment statement, и как таковой вы не можете иметь, что после return.

Смежные вопросы