Olg*_*ga 17 python operators python-2.7
有一个代码和类'方法有一行:
object.attribute |= variable
Run Code Online (Sandbox Code Playgroud)
我无法理解这意味着什么.我没有在基本Python运算符列表中找到(| =).
Ell*_*sch 20
这是一项bitwise or任务.它相当于
object.attribute = object.attribute | variable
Run Code Online (Sandbox Code Playgroud)
Ale*_*dro 10
在python中,|是调用对象__or__方法的简写,如文档和此代码示例中所示:
class Object(object):
def __or__(self, other):
print("Using __or__")
Run Code Online (Sandbox Code Playgroud)
让我们看看当使用|这个通用对象的运算符时会发生什么.
In [62]: o = Object()
In [63]: o | o
using __or__
Run Code Online (Sandbox Code Playgroud)
如您所见,该__or__方法被调用.int,'set','bool'都有实现__or__.对于数字和bool,它是一个按位OR.对于集合,它是一个联盟.因此,根据属性或变量的类型,行为将有所不同.许多按位运算符都设置了等价物,请参见此处.
我应该补充一下,“ bar-equals”现在(在2018年)最普遍用作集合元素运算符,用于将元素附加到集合(如果尚不存在)。
>>> a = {'a', 'b'}
>>> a
set(['a', 'b'])
>>> b = {'b', 'c'}
>>> b
set(['c', 'b'])
>>> a |= b
>>> a
set(['a', 'c', 'b'])
Run Code Online (Sandbox Code Playgroud)
例如,在自然语言处理中,一个用例是提取几种语言的组合字母:
alphabet |= {unigram for unigram in texts['en']}
alphabet |= {unigram for unigram in texts['de']}
...
Run Code Online (Sandbox Code Playgroud)