Python中的管道字符

时间:2011-05-13 07:29:26

标签: python pipe bitwise-operators

我看到函数调用中使用的“管道”字符(|):

res = c1.create(go, come, swim, "", startTime, endTime, "OK", ax|bx)

ax|bx中管道的含义是什么?

6 个答案:

答案 0 :(得分:98)

这也是联合集合运算符

set([1,2]) | set([2,3])

这将导致set([1, 2, 3])

答案 1 :(得分:55)

它是整数的按位OR 。例如,如果axbx中的一个或两个都是1,则评估为1,否则评估为0。它也适用于其他整数,例如15 | 128 = 143,即二进制的00001111 | 10000000 = 10001111

答案 2 :(得分:10)

答案 3 :(得分:10)

是的,上面的所有答案都是正确的。

虽然您可以为“|”找到更多异国情况的用例,但如果它是一个类使用的重载运算符,例如,

https://github.com/twitter/pycascading/wiki#pycascading

input = flow.source(Hfs(TextLine(), 'input_file.txt'))
output = flow.sink(Hfs(TextDelimited(), 'output_folder'))

input | map_replace(split_words, 'word') | group_by('word', native.count()) | output

在这个特定的用例管道中“|”运算符可以更好地被认为是unix管道运算符。但我同意,逐位运算符和联合集运算符是更常见的“|”用例在Python中。

答案 4 :(得分:4)

这是一个按位 - 或。

Python中所有运算符的文档可以在Python文档的Index - Symbols页面中找到。

答案 5 :(得分:2)

Python 3.9 中,管道被增强以合并(联合)字典。

>>> d = {'spam': 1, 'eggs': 2, 'cheese': 3}
>>> e = {'cheese': 'cheddar', 'aardvark': 'Ethel'}
>>> d | e
{'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}
>>> e | d
{'cheese': 3, 'aardvark': 'Ethel', 'spam': 1, 'eggs': 2}