Python-просто побитовый или

Сейчас изучаю simpy библиотеку python. Не могли бы вы объяснить мне, почему bitwise-or используется в этом примере. Почему мы не можем использовать простой оператор or.

results = yield req | env.timeout(patience)

person Kenenbek Arzymatov    schedule 17.03.2016    source источник
comment
Было бы полезно иметь немного больше контекста, например, что хранится в req? И что возвращает env? Знание того, что они из себя представляют, может помочь объяснить преимущества их побитового or'ing. Кроме того, есть ли шанс, что это ошибка в примере?   -  person srowland    schedule 17.03.2016


Ответы (1)


Из документации SimPy по основным типам событий.

Этот класс также реализует и() (&) и или() (|). Если вы объединяете два события с помощью одного из этих операторов, генерируется событие Condition, которое позволяет вам ожидать обоих или одного из них.

Это означает, что req и env.timeout(patience) оба являются событиями, и мы получим первое из них. т.е.

results = yield (req | env.timeout(patience))

Чтобы ответить на ваш первоначальный вопрос, похоже, что вместо этого вы можете использовать or, но это может не сделать то, что на самом деле происходит, более ясным и привести к ошибкам редактирования, если предположить, что это обычный старый or.

person cdlane    schedule 17.03.2016
comment
Вы можете использовать только побитовые операторы & и |, но не ключевые слова and и or. - person Stefan Scherfke; 17.03.2016
comment
@cdlane Не могли бы вы помочь с stackoverflow.com/ вопросы/36072808/ - person Kenenbek Arzymatov; 18.03.2016