什么| =(ior)在Python中做什么?

时间:2010-10-14 01:00:13

标签: python

Google不会让我搜索| =所以我无法找到相关文档。有人知道吗?

8 个答案:

答案 0 :(得分:66)

在Python和许多其他编程语言中,|bitwise-OR operation|= |+=+var |= value,即操作和停止的组合。

var = var | value是{{1}}

的缩写

答案 1 :(得分:40)

与sets一起使用时,它会执行并集操作。

答案 2 :(得分:28)

这只是当前变量和另一个变量之间的OR运算。成为lineModel.setSeriesColors("58BA27,FFCC33,F74A4A,F52F2F,A30303"); lineModel.setExtender("chartExtender"); T=True,请以图形方式查看输出:

F=False

例如:

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

答案 3 :(得分:22)

|=执行inplace, bitwise OR operation并执行unionPython sets操作。

例如,两个集合xy的并集共享以下等效表达式:

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

其中x的最终值相当于:

  1. 指定的OR操作
  2. in in OR操作
  3. 通过特殊方法进行的原地OR操作
  4. 另见section B.8 of Dive in Python 3关于Python运算符的特殊方法。

    以下是一些比较OR(|)和应用于集合的现场OR(|=)的示例:

    >>> 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'}
    

    以下是overloading the __ior__() method迭代MutableSet抽象基类中的迭代的示例。在Raymond Hettinger的OrderedSet recipe (see lines 3 and 10 respectively)中看到它也被分类并应用。以下是thread on Python-ideas有关使用|=更新集合的原因。

答案 4 :(得分:9)

它执行赋值的左侧和右侧的二进制按位OR,然后将结果存储在左侧变量中。

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

答案 5 :(得分:1)

这是按位还是。 假设我们有32 |= 10,图片32和10是二进制。

32 = 10 0000
10 = 00 1010

现在因为|是或,做一个按位或两个数字

即1或0 - > 1,0或0 - >在链中继续这个

10 0000 | 00 1010 = 10 1010.

现在将二进制更改为十进制,10 1010 = 42。

对于| =,请考虑已知示例x +=5。这意味着x = x + 5,因此,如果我们有x |= 5,则表示x = x bitwiseor with 5

答案 6 :(得分:1)

在Python中,| =(ior)的作用类似于联合操作。 就像x = 5和x | = 5一样,这两个值都将首先转换为二进制值,然后执行并运算并得到答案5。

答案 7 :(得分:1)

给出一个用例(在花了一些时间回答其他问题之后):

def has_some_property(item):
    fake_test_result = bool(item)
    return fake_rest_result

def lmk(data): # let_me_know_if_at_least_one_succeeds
    at_least_one = False
    for item in data:
       at_least_one |= has_some_property(item)
    return at_least_one

>>> lmk([False, False, False])
False
>>> lmk([True, False, False])
True
>>> lmk([False, True, False])
True

另请参阅this answer

中的警告