87 votes

Caractère pipe en Python

Je vois un caractère "pipe" ( | ) utilisé dans un appel de fonction :

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

Quelle est la signification du tuyau dans ax|bx ?

0 votes

Ceci devrait vous intéresser stackoverflow.com/questions/28252585/

153voto

gui11aume Points 583

Il s'agit également de l'opérateur d'union d'ensembles

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

Cela se traduira par set([1, 2, 3])

12 votes

C'est probablement beaucoup plus courantes que les opérations par bit.

70voto

ahmet alp balkan Points 7264

Il s'agit d'un OU par bit d'entiers. Par exemple, si l'un ou les deux ax o bx sont 1 ce qui donne 1 sinon à 0 . Il fonctionne également sur d'autres entiers, par exemple 15 | 128 = 143 c'est-à-dire 00001111 | 10000000 = 10001111 en binaire.

5 votes

Python ne possède pas d'opérateur logique ou.

0 votes

Et quand je tape 5|7 dans le shell ? Il renvoie 7. Pourquoi ?

0 votes

Parce que c'est ce que fait l'OR par bit.

27voto

Ruslan Points 196

Oui, toutes les réponses ci-dessus sont correctes.

Bien que vous puissiez trouver des cas d'utilisation plus exotiques pour "|", s'il s'agit d'un opérateur surchargé utilisé par une classe, par exemple,

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

Dans ce cas d'utilisation spécifique, l'opérateur pipe "|" peut être mieux considéré comme un opérateur pipe unix. Mais je suis d'accord, l'opérateur bit-wise et l'opérateur union set sont des cas d'utilisation beaucoup plus courants pour "|" en Python.

16voto

user12989841 Points 21

Sur Python 3.9 - PEP 584 - Ajouter des opérateurs d'union à la dictée dans la section intitulée Spécifications l'opérateur est expliqué. Le pipe a été amélioré pour fusionner (union) les dictionnaires.

>>> 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

commentaire 1 Si une clé apparaît dans les deux opérandes, la dernière valeur vue (c'est-à-dire celle de l'opérande de droite) l'emporte --> 'cheese' : 4 au lieu de 'cheese' : 3

commentaire 2 apparaît deux fois, la deuxième valeur est sélectionnée de sorte que d[cheese]=3

10voto

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X