Auto-PEP8 добавляет строки, превращая мою лямбду в функцию def. Как отключить этот конкретный автоматический формат?

Я использую код Visual Studio, и PEP8 автоматически форматирует часть моего кода, я только что узнал о лямбдах и у меня был трехстрочный код, подобный этому:

Это пошло от этого 3-строчного кода:

# Lambda example
divide = lambda x, y: x/y
print(divide(10, 2))

К этому 7-строчному коду:

# Lambda example


def divide(x, y): return x/y


print(divide(10, 2))

Кто-нибудь знает, как я могу сделать эту программу, чтобы специально не преобразовывать мою лямбда-функцию в функцию def?

Он действительно хорошо форматировал мой код, поэтому я не хочу полностью отключать эту автоматическую функцию, только ради лямбды.

3 ответа

Это вызвано pycodestyle код E731

Вы можете отключить это с --ignore=E731

В файле конфигурации (например, tox.ini / setup.cfg):

[pep8] 
ignore=E731

Есть несколько способов отключить автоматическое преобразование лямбда-выражения в определение функции.

  • Использование, как объяснил Энтони Соттиле в (его / ее) ответе. Нажмите Ctrl+,, поиск и добавление объекта --ignore=E731 как показано на следующем снимке экрана.

  • Или вы удалите autopep8 сначала вызвав pip uninstall autopep8 а затем установите yapf через pip install yapf.

  • Я позволяю другим добавлять другие методы из этой строки.

Другое решение состоит в том, чтобы заключить лямбда-присвоение в круглые скобки :

      divide = (lambda x, y: x/y)

autopep8 не заменит приведенный выше фрагмент на .

В общем, я бы не советовал этого делать, так как это противоречит рекомендациям PEP8.

Тем не менее, для этого есть варианты использования, например, если переменная условно назначается различным функциям, что может выглядеть довольно запутанно при выражении с использованием defс.

Другие вопросы по тегам