Автоматическое форматирование Python добавляет дополнительные пробелы

#python #visual-studio-code #pep8 #autopep8

#python #visual-studio-code #pep8 #autopep8

Вопрос:

Проблема, с которой я столкнулся, связана с автоматическим форматированием в коде Visual Studio для моих файлов Python.

Мне нравится использовать вкладки в Python, поскольку это упрощает согласованность и ускоряет ввод кода; однако, когда я сохраняю код Visual Studio, автоматическое форматирование при сохранении добавляет дополнительный пробел к каждой строке. Это означает, что скрипт python работает, но структура выглядит не так.

Я попытался отключить prettify, и это все еще происходит. Я не думаю, что более красивые форматы автоматического форматирования python в любом случае. Я попытался проверить файл настроек JSON, но я не думаю, что там тоже ничего нет.

Settings.json:

 {
    "color-highlight.markerType": "dot-before",
    "editor.detectIndentation": false,
    "editor.formatOnSave": true,
    "editor.tabSize": 3,
    "liveServer.settings.donotShowInfoMsg": true,
    "prettier.tabWidth": 3,
    "python.pythonPath": "C:\Users\mtapi\Anaconda3\python.exe",
    "window.zoomLevel": 1,
    "python.condaPath": "C:\Users\mtapi\Anaconda3\Scripts\conda.exe",
    "terminal.integrated.shell.windows": "C:\WINDOWS\System32\cmd.exe",
    "editor.insertSpaces": false,
    "prettier.useTabs": true,
    "python.linting.pylintEnabled": true,
    "python.linting.enabled": true,
    "python.linting.pep8Enabled": true,
    "editor.mouseWheelZoom": true,
    "editor.fontSize": 15,
    "workbench.iconTheme": "vscode-icons",
    "workbench.colorTheme": "Default High Contrast"
}
  

Вот пример сценария перед сохранением в формате:

введите описание изображения здесь

Вот что происходит после сохранения:

введите описание изображения здесь

Раньше этого не происходило. Дайте мне знать, если что-то сбивает с толку или требуется дополнительная информация

Комментарии:

1. Не произошло до чего?

2. Эти два параметра выглядят подозрительно: "editor.tabSize" amp; "prettier.tabWidth" . Попробуйте установить одно или оба значения равными 4. Согласно PEP8, отступ должен составлять 4 пробела. Итак, 1 tab = 4spaces — это правильная конфигурация.

3. Потрясающе! Решено!

4. @Miguel, можете ли вы подтвердить, какой из этих параметров нужно было изменить или оба из них?

5. Я установил для editor.tabSize и prettier.tabWidth значение 4 пробела.

Ответ №1:

Похоже, что что-то в вашем редакторе настроено на 4 пробела вместо 3 для отступа.

Однако, если вы хотите следовать PEP8, я бы посоветовал вам использовать 4 пробела для размера отступа, как это предлагается самим предложением (а не табуляциями): https://www.python.org/dev/peps/pep-0008/#indentation

С учетом сказанного, я бы предположил, что это как-то связано с этими строками, поскольку они говорят редактору использовать PEP8, а PEP8 запрашивает 4 пробела:

     "python.linting.pylintEnabled": true,
    "python.linting.enabled": true,
    "python.linting.pep8Enabled": true,
  

Наконец, последнее, что я заметил: ваш сценарий «до» имеет несогласованные размеры отступов, размер отступов в строке print(f'{A} {B} {C} {D}') отличается от размера остального кода.