Pipe character in Python

Question:

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?

Asked By: alwbtc

||

Answers:

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.

Answered By: ahmet alp balkan

It is a bitwise-or.

The documentation for all operators in Python can be found in the Index – Symbols page of the Python documentation.

Answered By: tzot

This is also the union set operator

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

This will result in set([1, 2, 3])

Answered By: gui11aume

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.

Answered By: Tagar

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

Answered By: user12989841
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.