什么是' | ='在python?

时间:2016-03-20 08:05:00

标签: python

我无法理解|=部分。
以下是使用此运算符的代码的link

affected_files |= set(modified_file_dict.keys())

4 个答案:

答案 0 :(得分:4)

这是set update,如文档中所述:

  

s.update(t)更新s |= t - 返回带有从t

添加的元素的集合

答案 1 :(得分:0)

它是bitwise operator |,意思是OR

因此,当您执行a |= blah时,它正在执行a = a | blah

>>> a = False
>>> a |= True
>>> a
True

在你的情况下,当你将它与集合一起使用时,它会得到两个集合的并集(即,集合中的集合或另一集合)。

因此,对于affected_files |= set(modified_file_dict.keys())affected_files将包含两个集合中的项目。

答案 2 :(得分:0)

您最终要做的是创建集合package main import ( "fmt" "os" "log" "bufio" ) func main() { file, err := os.Open("file.txt") if err != nil { log.Fatal(err) } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { // internally, it advances token based on sperator fmt.Println(scanner.Text()) // token in unicode-char fmt.Println(scanner.Bytes()) // token in bytes } } a的联合。

然而,需要指出的是

之间存在微妙的差异
b

a = a | b

第一行是调用a |= b ,第二行是调用a.__or__

a.__ior__将返回一个新集。 __or__将使用__ior__中的元素更新 a。请考虑以下示例,其中自定义类将一些打印语句添加到所涉及的方法中:

b

在此示例中,>>> class MySet(set): ... def __or__(self, other): ... print('calling __or__') ... return super(MySet, self).__or__(other) ... def __ior__(self, other): ... print('calling __ior__') ... return super(MySet, self).__ior__(other) ... >>> a = MySet({1,2}) >>> b = {3} >>> c = a >>> >>> a = a | b # build new set from the union of a and b, reassign name a calling __or__ >>> a {1, 2, 3} >>> c MySet({1, 2}) 仍然是集合c

{1,2}

在此示例中,>>> a = MySet({1,2}) >>> b = {3} >>> c = a >>> >>> a |= b # update a calling __ior__ >>> a MySet({1, 2, 3}) >>> c MySet({1, 2, 3}) 也已发生变异,因为ca从未停止为同一集的名称。

因此,当您执行c时要记住的是,在名称为a |= b的集合的所有名称中会看到更改。

答案 3 :(得分:0)

Python refernce on bitwise operators

操作员|是OR位运算符,例如,让我们取2 | 4。

2 =二进制10,二进制4 = 100。所以2 OR 4是逐位或。

换句话说:010 OR 100 = 110 = 6十进制。

所以2 | 4 = 6

如果应用于变量,则a = a | b就像输入| = b,这是同一操作的较短类型。

希望这会有所帮助:-)