Ошибка отступа в коде Visual Studio на Mac (снова) - PullRequest
0 голосов
/ 20 января 2019

Я новичок, пытающийся использовать Python (2.17.15 через Anaconda) на Visual Stodio Code на моем Mac. У меня есть следующий простой код:

def function(x):
    y = x + 2
    return y

Этот код вызывает у меня обычную проблему: ошибка отступа :

   return y
    ^
IndentationError: unexpected indent
>>>     return y
  File "<stdin>", line 1
    return y
    ^
IndentationError: unexpected indent
>>>

Нет необходимости говорить, что у Юпитера или Спайдера нет проблем с этим. Я проверил, что на вкладке VSC дает 4 пробела. Все похожие вопросы связаны с этим, но я не могу это исправить.

Другие, встроенные функции Python работают нормально.

Пожалуйста, дайте мне помощь или советы, так как я не знаю, как избежать этого.

ОБНОВЛЕНИЕ

Повторная установка Python3, этот простой код работает на Sublime, но все еще не работает на VS Code. Я все еще получаю ту же ошибку в VS Code.

UPDATE2

Итак, еще одно обновление. Если я перейду с return на print и вместо отладки с помощью команды shift и выполню код, то все заработает.

Есть идеи, что происходит?

1 Ответ

0 голосов
/ 20 января 2019

Это похоже на то, что вы запускаете код с помощью Shift + ENTER.

VS-код имеет следующие 2 привязки для Shift_ENTER:

enter image description here

Я полагаю, что вы видите 2-й из них, который говорит: «Выполнить выделение / строку в терминале Python. Я подозреваю, что у вас есть фокус на линии return y, и поэтомуон запускает только одну строку кода.

Если вместо Shift + ENTER вы используете команду «Выполнить код» в VS Code, вы должны увидеть, что она работает нормально:

enter image description here

Вы вполне могли бы подумать: «Хорошо ... поэтому, если я выберу весь код, это будет работать, верно?», И я согласен ... такое чувство, что оно должно работать. Однако,Я вижу аналогичную проблему. Я посмотрю, смогу ли я понять, почему, но на данный момент вы можете использовать команду «Выполнить код» в VS Code, и это будет делать то, что вы хотите. Если вы выделите код, который хотите запустить, этобудет ограничивать то, что будет выполнено.

Выполнить код можно с помощью Ctrl+Alt+N

Это выглядит какe (этот выбранный код работает неправильно с Shift + ENTER) - это ошибка, отслеживаемая здесь: https://github.com/Microsoft/vscode-python/issues/2837

И обходной путь (не идеальный) - добавить код до / после вашей функцииэто НЕ с отступом, а затем выберите и выполните те строки:

print("this...")

def function(x):
    y = x + 2
    return y

print("...now works if you select all these lines and Shift+ENTER!")
...