Pipe-Charakter in Python


Antworten:


62

Es ist ein bitweises ODER von ganzen Zahlen. Wenn beispielsweise einer oder beide von axoder bxsind 1, wird dies als 1, andernfalls als ausgewertet 0. Es funktioniert auch auf anderen Zahlen, zum Beispiel 15 | 128 = 143, das heißt 00001111 | 10000000 = 10001111in binär.


5
Python hat keine Logik oder keinen Operator.
Ignacio Vazquez-Abrams

14
@Ignacio: Python hat keine Logik oder Operator?! Wie nennt orman dann?
Jscs

2
@Ignacio beziehen Sie sich auf einen Null-Koaleszenz-Operator (wie in C # / Perl)? Ich habe noch nie davon gehört, aber wenn ich das richtig verstehe, ist das in gewisser Weise sinnvoll, da es sich um einen Kurzschlussbetreiber handelt. Ist es das, worauf Sie sich bezogen haben (verstehe ich Sie richtig)?
Zeekay

22
@zeekay: Richtig. Anstatt immer wiederkehrender Trueoder False, andund orimmer wieder zurückkehrt einen ihrer Operanden, also „Koaleszenz“ und nicht als „logisch“.
Ignacio Vazquez-Abrams

4
Was Mike gesagt hat. Im Allgemeinen wird die __or__Methode des ersten Operanden mit dem zweiten Operanden aufgerufen, sodass Sie das Verhalten für Ihre eigenen Klassen definieren können.
Denis Drescher

133

Dies ist auch der Union Set-Operator

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

Dies führt zu set([1, 2, 3])


8
Dies ist wahrscheinlich viel häufiger als bitweise Operationen.
jpmc26

16

Ja, alle obigen Antworten sind korrekt.

Obwohl Sie exotischere Anwendungsfälle für "|" finden könnten, wenn es sich um einen überladenen Operator handelt, der beispielsweise von einer Klasse verwendet wird,

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 diesem speziellen Anwendungsfall Pipe "|" Operator kann besser als Unix-Pipe-Operator gedacht werden. Ich stimme jedoch zu, dass bitweise Operatoren und Union Set-Operatoren weitaus häufigere Anwendungsfälle für "|" sind. in Python.



4

Es ist ein bitweises oder.

Die Dokumentation für alle Operatoren in Python finden Sie auf der Seite Index - Symbole der Python-Dokumentation.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.