Символ трубы в Python - PullRequest
       52

Символ трубы в Python

61 голосов
/ 13 мая 2011

Я вижу символ "pipe" (|), используемый в вызове функции:

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

Что означает значение канала в ax|bx?

Ответы [ 5 ]

101 голосов
/ 05 марта 2012

Это также оператор объединения объединений

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

Это приведет к set([1, 2, 3])

55 голосов
/ 13 мая 2011

Это побитовое ИЛИ целых чисел. Например, если один или оба из ax или bx равны 1, это оценивается как 1, в противном случае - 0. Он также работает с другими целыми числами, например 15 | 128 = 143, т.е. 00001111 | 10000000 = 10001111 в двоичном формате.

10 голосов
/ 23 октября 2016

Да, все ответы выше верны.

Хотя вы можете найти более экзотические варианты использования для "|", если это перегруженный оператор, используемый классом, например,

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 Pipe. Но я согласен, побитовый оператор и оператор множественного объединения являются гораздо более распространенными вариантами использования для "|" в Python.

10 голосов
/ 13 мая 2011
4 голосов
/ 14 мая 2011

Это побитовый или.

Документацию для всех операторов в Python можно найти на странице Index - Symbols документации Python.

...