Python中的管道字符


Answers:


63

它是整数的按位或。例如,如果一个或两个axbx1,这个计算结果为1,否则到0。这也适用于其他的整数,例如15 | 128 = 143,即00001111 | 10000000 = 10001111二进制。


5
Python没有逻辑或运算符。
伊格纳西奥·巴斯克斯

2
5 = 1017 = 111101 | 111 = 111 = 7
保罗- [R

14
@Ignacio:Python没有逻辑或运算符?!那你叫什么or呢?
jscs 2011年

23
@zeekay:正确。而不是总是返回TrueFalseand并且or总是返回其操作数之一,因此是“协约”而不是“逻辑”。
伊格纳西奥·巴斯克斯

4
迈克说了什么。更一般而言,它__or__使用第二个操作数调用第一个操作数的方法,因此您可以为自己的类定义其行为。
丹尼斯·德雷舍

135

这也是联合集运算符

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

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


9
这可能按位操作更为常见。
jpmc26

16

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

尽管您可以为“ |”找到更多特殊的用例,但是例如,如果它是类使用的重载运算符,

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中



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.