I see a "pipe" character (|
) used in a function call:
res = c1.create(go, come, swim, "", startTime, endTime, "OK", ax|bx)
What is the meaning of the pipe in ax|bx
?
I see a "pipe" character (|
) used in a function call:
res = c1.create(go, come, swim, "", startTime, endTime, "OK", ax|bx)
What is the meaning of the pipe in ax|bx
?
This is also the union set operator
set([1,2]) | set([2,3])
This will result in set([1, 2, 3])
It is a bitwise OR of integers. For example, if one or both of ax
or bx
are 1
, this evaluates to 1
, otherwise to 0
. It also works on other integers, for example 15 | 128 = 143
, i.e. 00001111 | 10000000 = 10001111
in binary.
Yep, all answers above are correct.
Although you could find more exotic use cases for "|", if it is an overloaded operator used by a class, for example,
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
In this specific use case pipe "|" operator can be better thought as a unix pipe operator. But I agree, bit-wise operator and union set operator are much more common use cases for "|" in Python.
In Python 3.9 - PEP 584 - Add Union Operators To dict in the section titled Specification, the operator is explained. The pipe was enhanced to merge (union) dictionaries.
>>> d = {'spam': 1, 'eggs': 2, 'cheese': 3}
>>> e = {'cheese': 4, 'nut': 5}
>>> d | e
{'spam': 1, 'eggs': 2, 'cheese': 4, 'nut': 5} # comment 1
>>> e | d
{'cheese': 3, 'nut': 5, 'spam': 1, 'eggs': 2} # comment 2
comment 1 If a key appears in both operands, the last-seen value (i.e. that from the right-hand operand) wins --> 'cheese': 4 instead of 'cheese': 3
comment 2 cheese appears twice, the second value is selected so d[cheese]=3
It is a bitwise-or.
The documentation for all operators in Python can be found in the Index - Symbols page of the Python documentation.