Эта идиома pythonic? (someBool и “Истинный Результат” или “Ложный Результат”)

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

let isCallbackExecuted = false;
let abcCallback = () => {
  // do something
  isCallbackExecuted = true;
};
Promise.resolve().then(abcCallback);
// isCallbackExecuted is true if callback is finished
7
задан Oddthinking 6 December 2008 в 01:57
поделиться

5 ответов

"a и b или c" идиома была каноническим способом выразить троичную арифметику, если в Python, прежде чем PEP 308 был записан и реализован. Эта идиома перестала работать, ответ "b" является самой ложью; для поддержки общего случая Вы могли записать

 return (a and [b] or [c])[0]

Альтернативный способ записать его был

 return (b,c)[not a]

который, с введением типа bool, мог быть переписан как

 return (c,b)[bool(a)]

(в случае, если это не ясно: преобразование в bool и не оператор, необходимы если не известный уже быть bool),

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

17
ответ дан 6 December 2019 в 07:30
поделиться

Необходимо читать Используя и - или прием (разделите 4.6.1) Погружения В Python Mark Pilgrim. Оказывается, что и - или прием имеет главные ловушки, о которых необходимо знать.

9
ответ дан 6 December 2019 в 07:30
поделиться

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

Я лично выбрал бы первую форму все же.

0
ответ дан 6 December 2019 в 07:30
поделиться

Нет, это не.

У меня был так или иначе подобный вопрос на днях.

если конструкция

val if cond else alt

Не очень приветствовалось (по крайней мере, ТАКИМ ОБРАЗОМ сообщество), и предпочтительный был:

if cond:
    val
else:
    alt

Можно получить собственное заключение.:)

-1
ответ дан 6 December 2019 в 07:30
поделиться

Черт. Не читаемый вообще. Для меня pythonic означает легкий читать.

return isUp and "Up" or "Down"

Звуки что-то Вы сделали бы в жемчуге.

-1
ответ дан 6 December 2019 в 07:30
поделиться
Другие вопросы по тегам:

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