Характер труби в Python


Відповіді:


63

Це побітове АБО цілих чисел. Наприклад, якщо один або обидва axабо bxє 1, це оцінює 1, а в іншому випадку - 0. Він також працює з іншими цілими числами, наприклад 15 | 128 = 143, тобто 00001111 | 10000000 = 10001111в двійковому.


5
Python не має логічного або оператора.
Ігнасіо Васкес-Абрамс

2
5 = 101, 7 = 111,101 | 111 = 111 = 7
Paul R

14
@Ignacio: У Python немає логічного або оператора ?! Що ти тоді називаєш or?
АТ

23
@zeekay: Правильно. Замість того , щоб завжди повертався Trueабо False, andі 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 pipe. Але я погоджуюсь, що бітовий оператор та оператор наборів об'єднань набагато частіше використовуються для "|" в Python.



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.