Как обработать исключения в списке понимания?

Спасибо за помощь. Мне удалось продвинуться вперед, но я еще не до конца. Может быть, это понятнее для других, но для себя я следовал инструкциям и сделал следующее:

  1. Создание приложения Azure AD v2 (apps.dev.microsoft.com). )

  2. Создать регистрацию BOT (портал Azure)

... но на шаге 1. выше , он автоматически создает приложение для вас, когда вы создаете «Регистрацию каналов бота», поэтому шаг 2 создания приложения не требуется, я создал второе приложение и использовал его в своих настройках, и я думаю, что именно здесь я ошибался. [ 118]

Спасибо за вашу помощь.

С другой стороны, как только вышеперечисленное было исправлено, и я удалился из компании Wifi, все прошло хорошо. Проблема с блокировкой сети!

97
задан martineau 27 June 2019 в 23:35
поделиться

4 ответа

В Python нет встроенного выражения, позволяющего игнорировать исключение (или возвращать альтернативные значения & c в случае исключений), поэтому невозможно, буквально говоря, «обрабатывать исключения в понимание списка ", потому что понимание списка - это выражение, содержащее другое выражение, не более того (т. е. нет операторов, и только операторы могут перехватывать / игнорировать / обрабатывать исключения).

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

Правильные ответы на вопрос "как обрабатывать исключения в понимании списка "все выражают часть всей этой истины: 1) буквально, т.е. лексически В самом понимании вы не можете; 2) практически вы делегируете задание функции или проверяете наличие ошибок склонны к ценностям, когда это возможно. Таким образом, ваше неоднократное утверждение, что это не ответ, является необоснованным.

81
ответ дан 24 November 2019 в 05:25
поделиться

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

eggs = (1,3,0,3,2)
[1/egg if egg > 0 else None for egg in eggs]


Output: [1, 0, None, 0, 0]
0
ответ дан 24 November 2019 в 05:25
поделиться

Вы можете использовать

[1/egg for egg in eggs if egg != 0]

, это просто пропустит нулевые элементы.

19
ответ дан 24 November 2019 в 05:25
поделиться

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

Другой вариант - не использовать понимание

eggs = (1,3,0,3,2)

result=[]
for egg in eggs:
    try:
        result.append(egg/0)
    except ZeroDivisionError:
        # handle division by zero error
        # leave empty for now
        pass

Вам решать, будет ли это более громоздким или нет

8
ответ дан 24 November 2019 в 05:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: