Что делает | = (ior) в Python?



Google не позволяет мне искать |= поэтому у меня возникли проблемы с поиском соответствующей документации. Кто-нибудь знает?

368   7  

7 ответов:

в Python и многих других языках программирования, | - Это побитовое или операция. |= это | Как += - это +.

при использовании с наборами он выполняет операцию объединения.

Это просто операция или между текущей переменной и другой. Быть T=True и F=False, смотрите вывод графически:

r    s    r|=s
--------------
T    T    T
T    F    T
F    T    T
F    F    F

например:

>>> r=True
>>> r|=False
>>> r
True
>>> r=False
>>> r|=False
>>> r
False
>>> r|=True
>>> r
True

|= выполняет inplace, побитовое или операция и Союз операции Python устанавливает.

например, объединение двух множеств x и y поделитесь следующими эквивалентными выражениями:

>>> x = x | y                                              # (1)
>>> x |= y                                                 # (2)
>>> x.__ior__(y)                                           # (3)

где конечное значение x эквивалентна либо:

  1. назначенный или операция
  2. место или операция
  3. an на месте или с помощью специального метода

см. также раздел B. 8 погружения в Python 3 о специальных методах операторов Python.


вот несколько примеров сравнения или (|) и на месте или (|=) применяется к наборам:

>>> x = {"a", "b", "c"}
>>> y = {"d", "e", "f"}

>>> # OR, | 
>>> x | y
{'a', 'b', 'c', 'd', 'e', 'f'}
>>> x                                                      # `x` is unchanged
{'a', 'b', 'c'}

>>> # Inplace OR, |=
>>> x |= y
>>> x                                                      # `x` is reassigned
{'a', 'b', 'c', 'd', 'e', 'f'}

вот пример перегрузка __ior__() метод для итерации iterables в MutableSet абстрактный базовый класс. Смотрите также суб-классифицируются и применяются в Реймонд Hettinger это рецепт OrderedSet (см. строки 3 и 10 соответственно). Вот это нить на Python-ideas о том, почему использовать |= для обновления набора.

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

http://docs.python.org/reference/expressions.html#binary-bitwise-operations

в Python,|=(ior) работает как операция объединения. например, если x=5 и x / =5, то оба значения сначала преобразуются в двоичное значение, затем выполняется операция объединения, и мы получаем ответ 5.

это побитовое или. Допустим, у нас есть 32 |= 10, изображение 32 и 10 является двоичным.

32 = 10 0000
10 = 00 1010

теперь, потому что | есть или, сделайте побитовое или на двух числах

т. е. 1 или 0 --> 1, 0 или 0 --> 0. Продолжайте это вниз по цепочке

10 0000 | 00 1010 = 10 1010.

теперь измените двоичный код на десятичный, 10 1010 = 42.

для|=, подумайте об известных примерах,x +=5. Это значит x = x + 5, поэтому, если у нас есть x |= 5, это значит x = x bitwiseor with 5.

Comments

    Ничего не найдено.